public UserPortfolio BuyShare(int portfolioId, int shareId, int quantity) { var userPortfolio = _userPortfolioService.Get(portfolioId); var share = _shareService.Get(shareId); var totalPrice = share.Price * quantity; if (userPortfolio.Cash < totalPrice) { throw new NotEnoughCashException(); } if (userPortfolio.Shares.ContainsKey(shareId)) { userPortfolio.Shares[shareId] += quantity; } else { userPortfolio.Shares.Add(shareId, quantity); } userPortfolio.Cash -= totalPrice; _userPortfolioService.Update(userPortfolio); return(userPortfolio); }