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