private string GetSortedStocksUrl(DCFRequest input) { var result = "https://financialmodelingprep.com/api/v3/"; result += $"stock-screener?marketCapMoreThan={input.MarketCapMoreThan.ToString()}"; result += $"&betaMoreThan=1&volumeMoreThan={input.VolumeMoreThan}"; if (!string.IsNullOrWhiteSpace(input.Sector)) { result += $"§or={input.Sector}"; } result += $"÷ndMoreThan={input.DividendMoreThan.ToString()}"; result += $"&apikey={_settings.ApiToken}"; return(result); }
public async Task <List <StockScreenListItem> > GetSortedStocks(DCFRequest input) { var httpClient = _httpClientFactory.CreateClient(); var request = new HttpRequestMessage(HttpMethod.Get, GetSortedStocksUrl(input)); request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); using var response = await httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead); var stream = await response.Content.ReadAsStreamAsync(); using StreamReader reader = new StreamReader(stream); using JsonTextReader jsonReader = new JsonTextReader(reader); JsonSerializer ser = new JsonSerializer(); var result = ser.Deserialize <List <StockScreenListItem> >(jsonReader); return(result); }
public async Task UpdateDCFs(DCFRequest request) { var stocks = await _stockListService.GetSortedStocks(request); foreach (var stock in stocks) { await _stocksRepository.DeleteDCF(stock.Symbol); var stockDcfs = await _dcfService.GetDividendCalendar2(stock.Symbol); foreach (var dcf in stockDcfs) { var dbStockDcfs = _mapper.Map <List <Historical_discounted_cash_flow_Entity> >(dcf); foreach (var dbDcf in dbStockDcfs) { dbDcf.Symbol = stock.Symbol; } await _stocksRepository.SaveDCFs(dbStockDcfs); } } }
public async Task <IActionResult> GetSortedStockList(DCFRequest request) { var result = await _stockListService.GetSortedStocks(request); return(Ok(result.Count)); }
public async Task <IActionResult> UpdateDCFs(DCFRequest request) { await _stockProvider.UpdateDCFs(request); return(Ok()); }