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