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