public OperationProcessingResult ProcessBankOperation(ProcessBankOperationCommand command) { try { var operation = _deps.BankOperations.SurelyFind(command.BankOperationId); var appOperationId = Operation.Id; var events = _deps.CentralProcessor.Process(new BankOperationProcessorCommand(appOperationId, operation)); Commit(); var operationModel = operation.ToModel <BankOperation, BankOperationModel>(); return(new OperationProcessingResult(operationModel, events)); } catch (Exception ex) { throw new ServiceException("Can't process bank operation.", ex); } }
public OperationProcessingResult ProcessBankOperation(ProcessBankOperationCommand command) { try { var operation = _deps.BankOperations.SurelyFind(command.BankOperationId); var appOperationId = Operation.Id; var events = _deps.CentralProcessor.Process(new BankOperationProcessorCommand(appOperationId, operation)); Commit(); var operationModel = operation.ToModel<BankOperation, BankOperationModel>(); return new OperationProcessingResult(operationModel, events); } catch (Exception ex) { throw new ServiceException("Can't process bank operation.", ex); } }
public void Can_Submit_And_Process_Card_Transfer() { var user = AuthenticateTerminator(); user.Profile.SmsConfirmationEnabled = false; var transferService = Scope.Resolve <ICardTransferClientService>(); var cardAccountService = Scope.Resolve <ICardAccountService>(); var transferRepository = Scope.Resolve <IRepository <Transfer> >(); var processingService = Scope.Resolve <IProcessingService>(); var cards = cardAccountService.GetUserCards(new CardQuery()) .Where(x => x.AccountNo != null) .ToList(); var command = new InterbankCardTransferCommand { FromCardId = cards.First(x => x.Owner.UserId == user.Id).CardId, ToCardNo = cards.First(x => x.Owner.UserId != user.Id).CardNo, ToCardExpirationDateUtc = cards[1].ExpirationDateUtc, Amount = 10 }; var operation = transferService.Transfer(command); var command2 = new ProcessBankOperationCommand { BankOperationId = operation.Id }; var nextState = processingService.ProcessBankOperation(command2); var transfer = transferRepository.Find(command2.BankOperationId); processingService.ProcessTransaction(new ProcessTransactionCommand { OperationId = command2.BankOperationId, TransactionId = transfer.Withdrawal.Id }); nextState = processingService.ProcessBankOperation(command2); processingService.ProcessTransaction(new ProcessTransactionCommand { OperationId = command2.BankOperationId, TransactionId = transfer.Deposit.Id }); nextState = processingService.ProcessBankOperation(command2); transfer = transferRepository.Find(command2.BankOperationId); Assert.AreEqual(ProcessStatus.Completed, transfer.Status); }
public void Can_Submit_And_Process_Card_Transfer() { var user = AuthenticateTerminator(); user.Profile.SmsConfirmationEnabled = false; var transferService = Scope.Resolve<ICardTransferClientService>(); var cardAccountService = Scope.Resolve<ICardAccountService>(); var transferRepository = Scope.Resolve<IRepository<Transfer>>(); var processingService = Scope.Resolve<IProcessingService>(); var cards = cardAccountService.GetUserCards(new CardQuery()) .Where(x => x.AccountNo != null) .ToList(); var command = new InterbankCardTransferCommand { FromCardId = cards.First(x => x.Owner.UserId == user.Id).CardId, ToCardNo = cards.First(x => x.Owner.UserId != user.Id).CardNo, ToCardExpirationDateUtc = cards[1].ExpirationDateUtc, Amount = 10 }; var operation = transferService.Transfer(command); var command2 = new ProcessBankOperationCommand { BankOperationId = operation.Id }; var nextState = processingService.ProcessBankOperation(command2); var transfer = transferRepository.Find(command2.BankOperationId); processingService.ProcessTransaction(new ProcessTransactionCommand { OperationId = command2.BankOperationId, TransactionId = transfer.Withdrawal.Id }); nextState = processingService.ProcessBankOperation(command2); processingService.ProcessTransaction(new ProcessTransactionCommand { OperationId = command2.BankOperationId, TransactionId = transfer.Deposit.Id }); nextState = processingService.ProcessBankOperation(command2); transfer = transferRepository.Find(command2.BankOperationId); Assert.AreEqual(ProcessStatus.Completed, transfer.Status); }