private void Apply(SharesBought evnt) { _portfolioState.Money -= (evnt.Amount * evnt.Price); var share = new ShareTicker(evnt.Amount, evnt.Price); if (_portfolioState.Shares == null) { _portfolioState.Shares = new Dictionary <string, ShareTicker>(); } if (_portfolioState.Shares.ContainsKey(evnt.Stock)) { _portfolioState.Shares[evnt.Stock].Price = ((_portfolioState.Shares[evnt.Stock].NumberOfShares * _portfolioState.Shares[evnt.Stock].Price) + (evnt.Amount * evnt.Price)) / (_portfolioState.Shares[evnt.Stock].NumberOfShares + evnt.Amount); _portfolioState.Shares[evnt.Stock].NumberOfShares += evnt.Amount; } else { _portfolioState.Shares.Add(evnt.Stock, share); } }
private void Apply(SharesSold evnt) { _portfolioState.Money += (evnt.Amount * evnt.Price); var share = new ShareTicker(evnt.Amount, evnt.Price); if (_portfolioState.Shares == null) { _portfolioState.Shares = new Dictionary <string, ShareTicker>(); } if (_portfolioState.Shares.ContainsKey(evnt.Stock)) { _portfolioState.Shares[evnt.Stock].NumberOfShares -= evnt.Amount; _portfolioState.Profit = (evnt.Price - _portfolioState.Shares[evnt.Stock].Price) * evnt.Amount; } else { //do nothing } }