Пример #1
0
        private Error SellStocks(StockEvent e)
        {
            Stock_M s = _mainModel.Stocks.Find((stock) => stock.Tag == e.Name);

            if (s != null)
            {
                BuyOrSell_M bos = _currentPortfolio.CurrentlyHeld().Find(b => b.StockName == s.Name);
                if (e.Amount > bos.Quantity)
                {
                    return(new Error("Selling too many stocks"));
                }
                _currentPortfolio.SellStock(s, e.Amount);
            }
            Broadcast(new PortfolioEvent("portfolio", _currentPortfolio.Name));
            return(Error.None);
        }
Пример #2
0
        /// <summary>
        /// Deletes a portfolio from the account
        /// </summary>
        /// <param name="name">Name of portfolio to be deleted</param>
        public void DeletePortfolio(string name, List <Stock_M> stocks)
        {
            Portfolio_M selectedPortfolio = GetPortfolioByName(name);

            foreach (BuyOrSell_M BOS in selectedPortfolio.CurrentlyHeld())
            {
                Stock_M stock = stocks.Find(s => BOS.StockName == s.Name);
                selectedPortfolio.SellStock(stock, BOS.Quantity);
            }

            _transactions.AddRange(selectedPortfolio.TransactionList);
            if (_portfolios.RemoveAll((p) => p.Name == name) == 0)
            {
                throw new ArgumentException("No portfolio exists with that name.");
            }
        }