// GET: api/Stocks public List <Stock> GetStocks(bool forceRefresh) { List <Stock> result = new List <Stock>(); List <Stock> stocks = db.Stocks.ToList(); ApplicationDbContext stockPriceContext = new ApplicationDbContext(); StockPrice stockPrice = null; foreach (var stock in stocks) { stockPrice = stockPriceContext.StockPrices.Where(s => s.StockID == stock.ID).OrderByDescending(s => s.Created).First(); if ((stockPrice == null || stockPrice.Created < DateTime.Now.AddHours(-1)) || forceRefresh) { try { stockPrice = DataFetcher.GetStockQuote(stock.Symbol).StockPrices.FirstOrDefault(); } catch (Exception) { } stockPrice.StockID = stock.ID; stockPriceContext.StockPrices.Add(stockPrice); } stockPrice.CalculateValues(); if (stock.StockPrices.Count > 0) { stock.StockPrices.Clear(); stock.StockPrices.Add(stockPrice); } result.Add(stock); } stockPriceContext.SaveChanges(); return(result.OrderBy(res => res.Name).ToList()); }