public void Apply(AquisitionOccurredEvent @event)
        {
            var holding = _Holdings[@event.Stock];

            if (holding == null)
            {
                var stock = _StockResolver.GetStock(@event.Stock);
                holding = _Holdings.Add(stock, @event.Date);
                holding.CgtEventOccurred += Holding_CgtEventOccurred;
            }

            var aquisition = new Aquisition
            {
                Id                    = @event.TransactionId,
                Date                  = @event.Date,
                Stock                 = holding.Stock,
                Comment               = @event.Comment,
                Units                 = @event.Units,
                AveragePrice          = @event.AveragePrice,
                TransactionCosts      = @event.TransactionCosts,
                CreateCashTransaction = @event.CreateCashTransaction
            };

            var handler = _TransactionHandlers.GetService <Aquisition>();

            handler.Apply(aquisition, holding, _CashAccount);
            _Transactions.Add(aquisition);
        }
        public void AquireShares(Guid stockId, Date aquisitionDate, int units, decimal averagePrice, decimal transactionCosts, bool createCashTransaction, string comment, Guid transactionId)
        {
            var @event = new AquisitionOccurredEvent(Id, Version, transactionId, aquisitionDate, stockId, comment)
            {
                Units                 = units,
                AveragePrice          = averagePrice,
                TransactionCosts      = transactionCosts,
                CreateCashTransaction = createCashTransaction
            };

            Apply(@event);

            PublishEvent(@event);
        }