Beispiel #1
0
        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 += $"&sector={input.Sector}";
            }
            result += $"&dividendMoreThan={input.DividendMoreThan.ToString()}";
            result += $"&apikey={_settings.ApiToken}";
            return(result);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
                }
            }
        }
Beispiel #4
0
        public async Task <IActionResult> GetSortedStockList(DCFRequest request)
        {
            var result = await _stockListService.GetSortedStocks(request);

            return(Ok(result.Count));
        }
Beispiel #5
0
        public async Task <IActionResult> UpdateDCFs(DCFRequest request)
        {
            await _stockProvider.UpdateDCFs(request);

            return(Ok());
        }