/*
         *  Calls the IEX reference API to get the stock stats.
         *  Returns a stock stats whose information is available.
         */
        public StockStats GetStockStats(String symbol)
        {
            string     IEXTrading_API_PATH = BASE_URL + "stock/" + symbol + "/stats";
            string     responseStockStats  = "";
            StockStats stockStats          = null;

            HttpClient httpClient1 = new HttpClient();

            httpClient1.DefaultRequestHeaders.Accept.Clear();
            httpClient1.DefaultRequestHeaders.Accept.Add(new
                                                         System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

            // connect to the IEXTrading API and retrieve information
            httpClient1.BaseAddress = new Uri(IEXTrading_API_PATH);
            HttpResponseMessage response = httpClient1.GetAsync(IEXTrading_API_PATH).GetAwaiter().GetResult();

            // read the Json objects in the API response
            if (response.IsSuccessStatusCode)
            {
                responseStockStats = response.Content.ReadAsStringAsync().GetAwaiter().GetResult();
                Console.WriteLine(responseStockStats);
            }

            // now, parse the Json strings as C# objects
            if (!responseStockStats.Equals(""))
            {
                stockStats = JsonConvert.DeserializeObject <StockStats>(responseStockStats);
            }

            return(stockStats);
        }
        public IActionResult ChartData(String symbol)
        {
            StockStats stockstats = GetStockStats(symbol);

            PopulateStockStats(stockstats);

            List <Chart> chartData = GetChartData(symbol);

            var ci = System.Globalization.CultureInfo.GetCultureInfo("en-us");
            List <DataPoint> dataPoints = new List <DataPoint>();

            foreach (Chart chart in chartData)
            {
                DateTime  yourDateTime             = DateTime.Parse(chart.date, ci);
                long      yourDateTimeMilliseconds = new DateTimeOffset(yourDateTime).ToUnixTimeMilliseconds();
                DataPoint dp = new DataPoint(yourDateTimeMilliseconds, chart.high);
                dataPoints.Add(dp);
            }

            ViewBag.symbol    = symbol;
            ViewBag.StockStat = new List <StockStats> {
                stockstats
            };
            ViewBag.DataPoints = JsonConvert.SerializeObject(dataPoints);

            return(View());
        }
 /*
  *  Save the symbol statistic in the database
  */
 public void PopulateStockStats(StockStats stock)
 {
     //Database will give PK constraint violation error when trying to insert record with existing PK.
     //So add company only if it doesnt exist, check existence using symbol (PK)
     if (dbContext.StockStatistics.Where(c => c.symbol.Equals(stock.symbol)).Count() == 0)
     {
         dbContext.StockStatistics.Add(stock);
     }
     dbContext.SaveChanges();
 }