public async Task UpdatePrices(int stockId, string symbol) { try { var dataProvider = new FMProvider(); var lastPriceDate = _context.Stocks.Where(s => s.StockId == stockId).Max(d => d.Date).AddDays(1); var fmStocks = await dataProvider.GetHistoricalPrices(symbol, lastPriceDate); if (fmStocks != null) { foreach (var fmStock in fmStocks) { _context.Add(new Stock() { StockId = stockId, Close = fmStock.close, Open = fmStock.open, Low = fmStock.low, High = fmStock.high, Volume = (long)fmStock.volume, Date = DateTime.Parse(fmStock.date) }); } _context.SaveChanges(); } } catch (Exception ex) { _logger.LogWarning("ERROR " + ex.Message); } }
public async Task Split(string[] symbols) { var lastSplitDate = _context.Split.Count() > 0 ? _context.Split.Max(s => s.Date).AddDays(1) : DateTimeOffset.Now.Date; var dataProvider = new FMProvider(); try { var fmSplits = await dataProvider.GetSplits(lastSplitDate); List <Split> newSplits = new List <Split>(); foreach (var split in fmSplits.Where(s => symbols.Contains(s.symbol))) { newSplits.Add(new Split() { StockId = _companyService.Get(split.symbol).StockId, Date = DateTime.Parse(split.date), Denominator = split.denominator, Numerator = split.numerator }); } _context.Split.AddRange(newSplits); _context.SaveChanges(); foreach (var split in newSplits) { await _stockService.Split(split.StockId, split.Numerator / split.Denominator); } } catch (Exception ex) { _logger.LogWarning("ERROR " + ex.Message); } }
public async Task UpdateWithDataProvider(string[] symbols) { try { var dataProvider = new FMProvider(); var fmNews = await dataProvider.GetNews(symbols); var newNews = new List <News>(); foreach (var fmN in fmNews) { newNews.Add(new News() { Symbol = fmN.symbol, PublishedDate = DateTime.Parse(fmN.publishedDate), Title = fmN.title, Image = fmN.image, Site = fmN.site, Text = fmN.text, Url = fmN.url }); } DateTimeOffset minDate = newNews.Min(d => d.PublishedDate); var news = _context.News.Where(d => d.PublishedDate >= minDate).ToList(); foreach (var n in newNews) { if (news.Where(e => e.Symbol == n.Symbol && e.PublishedDate == n.PublishedDate && e.Title == n.Title).Count() == 0) { Add(n); } } } catch (Exception ex) { _logger.LogWarning("ERROR " + ex.Message); } }