Exemplo n.º 1
0
        protected virtual IEnumerable <ApplicationEvent> WhenWithdrawalCompleted(Guid appOperationId, Transfer transfer)
        {
            var transactionName    = TransactionReferenceBook.ForOperation(transfer);
            var depositTransaction = Deposit(transfer.To, transfer, transactionName.Code, transactionName.Description);

            transfer.SetDepositTransaction(depositTransaction);
            var transactionModel = depositTransaction.ToModel <Transaction, TransactionModel>();

            TransferRepository.Update(transfer);
            return(new List <ApplicationEvent>()
            {
                new TransactionProgressEvent(appOperationId, transactionModel, transfer.Id)
            });
        }
Exemplo n.º 2
0
        public CardTransfer Create(UserCard from, UserCard to, decimal amount)
        {
            Argument.NotNull(from, "from");
            Argument.NotNull(to, "to");

            //TODO: probably better move this code to some another class
            var operationCategoryCode = from.Owner.Id == to.Owner.Id
                ? PersonalTransferOperation
                : InterbankTransferOperation;
            var operationCategory = _operationCategories.Find(operationCategoryCode);

            if (operationCategory == null)
            {
                throw new InvalidOperationException("Can't find operation category.");
            }
            var transfer        = new CardTransfer(operationCategory, from, to, amount);
            var transactionName = _transactionReferenceBook.ForOperation(transfer);

            transfer.Withdrawal = transfer.From.Withdraw(from, transactionName.Code, transactionName.Description,
                                                         _settings.Location, transfer.MoneyAmount, _moneyConverter);
            return(transfer);
        }