Exemplo n.º 1
0
        public void PublishToSubscriber(Common.Model.Message pMessage)
        {
            if (pMessage is Common.Model.DeliverProcessedMessage)
            {
                Common.Model.DeliverProcessedMessage lMessage = pMessage as Common.Model.DeliverProcessedMessage;
                string         orderNumber = lMessage.orderNumber;
                Guid           pDeliveryId = lMessage.pDeliveryId;
                DeliveryStatus status      = (DeliveryStatus)lMessage.status;
                string         errorMsg    = lMessage.errorMsg;
                NotificationProvider.NotifyDeliveryProcessed(orderNumber, pDeliveryId, status, errorMsg);
            }

            else if (pMessage is Common.Model.DeliverCompleteMessage)
            {
                Common.Model.DeliverCompleteMessage lMessage = pMessage as Common.Model.DeliverCompleteMessage;
                Guid           pDeliveryId = lMessage.pDeliveryId;
                DeliveryStatus status      = (DeliveryStatus)lMessage.status;
                NotificationProvider.NotifyDeliveryCompletion(pDeliveryId, status);
            }

            else if (pMessage is Common.Model.TransferResultMessage)
            {
                Common.Model.TransferResultMessage lMessage = pMessage as Common.Model.TransferResultMessage;
                Boolean success = lMessage.Success;
                String  Msg     = lMessage.Message;
                Guid    orderId = lMessage.OrderNumber;

                OrderProvider.AfterTransferResultReturns(success, orderId, Msg);
            }
        }
Exemplo n.º 2
0
        public void Transfer(double pAmount, int pFromAcctNumber, int pToAcctNumber, Guid pExternalOrderId)
        {
            using (TransactionScope lScope = new TransactionScope())
                using (BankEntityModelContainer lContainer = new BankEntityModelContainer())
                {
                    try
                    {
                        Account lFromAcct = GetAccountFromNumber(pFromAcctNumber);
                        Account lToAcct   = GetAccountFromNumber(pToAcctNumber);
                        lFromAcct.Withdraw(pAmount);
                        lToAcct.Deposit(pAmount);
                        lContainer.Attach(lFromAcct);
                        lContainer.Attach(lToAcct);
                        lContainer.ObjectStateManager.ChangeObjectState(lFromAcct, System.Data.EntityState.Modified);
                        lContainer.ObjectStateManager.ChangeObjectState(lToAcct, System.Data.EntityState.Modified);
                        lContainer.SaveChanges();



                        Common.Model.TransferResultMessage transferResultMessage = new Common.Model.TransferResultMessage()
                        {
                            Topic       = "VideoStore",
                            Success     = true,
                            OrderNumber = pExternalOrderId,
                            Message     = "Transfer success"
                        };
                        PublisherServiceClient lClient = new PublisherServiceClient();
                        lClient.Publish(transferResultMessage);
                    }
                    catch (Exception lException)
                    {
                        Common.Model.TransferResultMessage transferResultMessage = new Common.Model.TransferResultMessage()
                        {
                            Topic       = "VideoStore",
                            Success     = false,
                            OrderNumber = pExternalOrderId,
                            Message     = "Error occured while transferring money:  " + lException.Message
                        };
                        //Console.WriteLine("Error occured while transferring money:  " + lException.Message);
                        //throw;
                        PublisherServiceClient lClient = new PublisherServiceClient();
                        lClient.Publish(transferResultMessage);
                    }
                    lScope.Complete();
                }
        }