internal static void When(TransactionCreatedDomainEvent @event)
        {
            var stock       = @event.Stock;
            var transaction = Transaction.Create(@event.Wallet.WalletId, stock.Ticker, stock.Quantity, stock.Amount, 10.50, @event.OperationBuy);

            @event.Wallet.Transactions.Add(transaction);
            @event.Wallet.Raise(WalletUpdatedDomainEvent.Create(@event.Wallet, transaction));
        }
Ejemplo n.º 2
0
        private void When(TransactionCreatedDomainEvent @event)
        {
            this.Msisdn = !string.IsNullOrWhiteSpace(@event.Msisdn) ? @event.Msisdn
                                                      : throw new ArgumentNullException(nameof(@event.Msisdn));
            this.OrderId = !string.IsNullOrWhiteSpace(@event.OrderId) ? @event.OrderId
                                                     : throw new ArgumentNullException(nameof(@event.OrderId));

            this.TransactionDateTime = @event.TransactionDateTime;

            this.TransactionTypeId = PaymentTransactionType.DirectPaymentType.Id;

            if (DateTime.Now.AddDays(-1) > @event.TransactionDateTime)
            {
                throw new PaymentDomainException($"Invalid transactionDateTime {@event.TransactionDateTime}");
            }
        }
Ejemplo n.º 3
0
        internal static void When(StockSoldDomainEvent @event)
        {
            var newStock = (Stock)@event.Stock;
            var stock    = @event.Wallet.Stocks?.FirstOrDefault(s => s.Ticker == newStock.Ticker);

            if (stock.Quantity == newStock.Quantity)
            {
                @event.Wallet.Stocks.Remove(stock);
            }
            else
            {
                stock.SellStock(newStock.Quantity);
            }

            @event.Wallet.Raise(TransactionCreatedDomainEvent.Create(@event.Wallet, newStock, false));
        }
Ejemplo n.º 4
0
        internal static void When(StockBougthDomainEvent @event)
        {
            var newStock = @event.Stock;
            var stock    = @event.Wallet.Stocks?.FirstOrDefault(s => s.Ticker == newStock.Ticker);

            if (stock == null)
            {
                stock = newStock;
                @event.Wallet.Stocks.Add(stock);
            }
            else
            {
                stock.AddStock(newStock.Quantity, newStock.Amount);
            }

            @event.Wallet.Raise(TransactionCreatedDomainEvent.Create(@event.Wallet, newStock, true));
        }
Ejemplo n.º 5
0
        private void When(TransactionCreatedDomainEvent @event)
        {
            this.TransactionDateTime = @event.TransactionDateTime;

            this.TransactionTypeId = PaymentTransactionType.DirectPaymentType.Id;
        }