public void AdjustCostBase(Guid stockId, Date date, decimal percentage, string comment, Guid transactionId) { var @event = new CostBaseAdjustmentOccurredEvent(Id, Version, transactionId, date, stockId, comment) { Percentage = percentage }; Apply(@event); PublishEvent(@event); }
public void Apply(CostBaseAdjustmentOccurredEvent @event) { var holding = _Holdings[@event.Stock]; if (holding == null) { throw new NoSharesOwnedException("No shares owned"); } var costBaseAdjustment = new CostBaseAdjustment { Id = @event.TransactionId, Date = @event.Date, Stock = holding.Stock, Comment = @event.Comment, Percentage = @event.Percentage }; var handler = _TransactionHandlers.GetService <CostBaseAdjustment>(); handler.Apply(costBaseAdjustment, holding, _CashAccount); _Transactions.Add(costBaseAdjustment); }