private async Task <List <SecuritySymbol> > ObtainSymbolsFromIeXAsync() { LastUpateCollectionMd lastUpdateDate = null; if (symbols != null && symbols.Count >= 100 && (DateTime.Now - lastSymbolUpdate).TotalDays < 1) { return(symbols); } lastUpdateDate = GetSymbolsFromDb(); if (symbols != null && symbols.Count >= 100) { lastSymbolUpdate = lastUpdateDate.LastUpdate; return(symbols); } if (symbols == null) { symbols = new List <SecuritySymbol>(); } else { symbols.Clear(); } var urlToUse = iexSymbolListURL.Replace(apiKey, _envHandler.GetApiKey(iexTradingProvider)); var url1ToUse = iexOTCSymbolListURL.Replace(apiKey, _envHandler.GetApiKey(iexTradingProvider)); try { using (var httpClient = new HttpClient()) { string data = "{}"; data = await httpClient.GetStringAsync(urlToUse); var settings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, MissingMemberHandling = MissingMemberHandling.Ignore }; var symbols0 = JsonConvert.DeserializeObject <IEnumerable <SecuritySymbol> >(data, settings).ToList(); symbols.AddRange(symbols0); var data1 = "{}"; data1 = await httpClient.GetStringAsync(url1ToUse); var symbols1 = JsonConvert.DeserializeObject <IEnumerable <SecuritySymbol> >(data1, settings).ToList(); symbols.AddRange(symbols1); lastSymbolUpdate = DateTime.Now; lastUpdateDate = await PopulateSymbolsToDbAsync(lastUpdateDate); return(symbols); } } catch (Exception ex) { _logger.LogError("Error while getting data from IEX trading"); _logger.LogError(ex.Message); return(new List <SecuritySymbol>()); } }
private LastUpateCollectionMd GetSymbolsFromDb() { LastUpateCollectionMd lastUpdateDate = _connectionHandlerLU.Get(r => r.CollectionName.Equals(SecSymobls)).FirstOrDefault(); if (lastUpdateDate != null && lastUpdateDate.LastUpdate >= DateTime.Now.AddDays(-1)) { var symbolsMd = _connectionHandlerSS.Get().ToList(); if (symbolsMd != null && symbolsMd.Any()) { symbols = _mapper.Map <List <SecuritySymbol> >(symbolsMd); } } return(lastUpdateDate); }
private async Task <LastUpateCollectionMd> PopulateSymbolsToDbAsync(LastUpateCollectionMd lastUpdateDate) { var symbolsMd = _mapper.Map <List <SecuritySymbolMd> >(symbols); var updateResult = false; if (lastUpdateDate == null) { lastUpdateDate = new LastUpateCollectionMd { CollectionName = SecSymobls, LastUpdate = DateTime.Now }; lastUpdateDate = await _connectionHandlerLU.Create(lastUpdateDate); if (lastUpdateDate.Id.IsNullOrWhiteSpace()) { _logger.LogCritical("Could not insert record to collection LastUpdate"); } } else { lastUpdateDate.LastUpdate = DateTime.Now; updateResult = await _connectionHandlerLU.Update(lastUpdateDate.Id, lastUpdateDate); if (!updateResult) { _logger.LogCritical("Could not update record in LastUpdate"); } } updateResult = await _connectionHandlerSS.RemoveAll(); if (!updateResult) { _logger.LogCritical("Could delete all records in SecuritySymbol"); } updateResult = await _connectionHandlerSS.Create(symbolsMd); if (!updateResult) { _logger.LogCritical("Could insert records in SecuritySymbol"); } return(lastUpdateDate); }