Exemplo n.º 1
0
        public async Task <IActionResult> QuestionsAsync(TriviaParametersViewModel triviaParameters)
        {
            int    categoryId   = triviaParameters.CategoryId;
            string difficulty   = triviaParameters.Difficulty;
            string questionType = triviaParameters.QuestionType;
            int    amount       = triviaParameters.NumberOfQuestions;

            var settings = new JsonSerializerSettings
            {
                NullValueHandling     = NullValueHandling.Ignore,
                MissingMemberHandling = MissingMemberHandling.Ignore
            };

            string sessionToken = HttpContext.Session.GetString("ApiSessionToken");

            if (sessionToken == null)
            {
                string tokenRequestUrl = @"https://opentdb.com/api_token.php?command=request";
                var    jsonResponse    = await ApiHub.GetJson(tokenRequestUrl);

                var resultJToken    = JsonConvert.DeserializeObject <JToken>(jsonResponse);
                var apiSessionToken = resultJToken["token"].ToString();
                HttpContext.Session.SetString("ApiSessionToken", apiSessionToken);
                sessionToken = apiSessionToken;
            }
            string url  = $@"https://opentdb.com/api.php?amount={amount}&category={categoryId}&difficulty={difficulty}&type={questionType}&token={sessionToken}";
            var    json = await ApiHub.GetJson(url);

            var result = JsonConvert.DeserializeObject <Questions>(json);
            TriviaQuestionsViewModel triviaQuestionsViewModel = new TriviaQuestionsViewModel();

            triviaQuestionsViewModel.Questions = result;

            return(View("questions", triviaQuestionsViewModel));
        }
        /// <summary>
        /// Gets Stock information from IExcloud API in form of json object and then
        /// deserializes it into a list of StockQuotes.
        /// </summary>
        /// <returns>List of StockQuotes to the Ticker ViewComponent</returns>
        public async Task <IViewComponentResult> InvokeAsync()
        {
            List <StockQuote> stocks = new List <StockQuote>();
            var json = await ApiHub.GetJson(_URL);

            var root = JObject.Parse(json);

            foreach (var r in root)
            {
                var sybmol = JsonConvert.DeserializeObject <StockQuote>(r.Value["quote"].ToString());
                stocks.Add(sybmol);
            }
            return(View("Default", stocks));
        }
        /// <summary>
        /// Gets Stock information from IExcloud API in form of json object and then
        /// deserializes it into a list of StockQuotes.
        /// </summary>
        /// <returns>List of StockQuotes to the Ticker ViewComponent</returns>
        public async Task <IViewComponentResult> InvokeAsync()
        {
            List <StockQuote> stocks = new List <StockQuote>();

            var json = await ApiHub.GetJson(_URL);

            var root     = JArray.Parse(json);
            var children = root.Children();
            var settings = new JsonSerializerSettings
            {
                NullValueHandling     = NullValueHandling.Ignore,
                MissingMemberHandling = MissingMemberHandling.Ignore
            };

            foreach (JToken t in children)
            {
                var symbol = JsonConvert.DeserializeObject <StockQuote>(t.ToString(), settings);
                stocks.Add(symbol);
            }
            return(View("Default", stocks));
        }
Exemplo n.º 4
0
        public async Task <IActionResult> StockQuoteAsync(string symbol)
        {
            var           userId = _userManager.GetUserId(User);
            PlayerProfile player = _ProfileRepository.FindByCondition(p => p.UserId == userId).First();

            StockQuoteViewModel stockQuoteViewModel = new StockQuoteViewModel();

            stockQuoteViewModel.Player = player;

            var settings = new JsonSerializerSettings
            {
                NullValueHandling     = NullValueHandling.Ignore,
                MissingMemberHandling = MissingMemberHandling.Ignore
            };

            _url = $"https://cloud.iexapis.com/stable/stock/{symbol}/quote?token={_iexcloudKey}";
            var json = await ApiHub.GetJson(_url);

            StockQuote stockQuote = JsonConvert.DeserializeObject <StockQuote>(json, settings);

            stockQuoteViewModel.StockQuote = stockQuote;

            _url = $"https://cloud.iexapis.com/stable/stock/{symbol}/logo?token={_iexcloudKey}";
            json = await ApiHub.GetJson(_url);

            JObject obj     = JObject.Parse(json);
            string  logoUrl = (string)obj["url"];

            stockQuoteViewModel.LogoUrl = logoUrl;

            _url = $"https://cloud.iexapis.com/stable/stock/{symbol}/company?token={_iexcloudKey}";
            json = await ApiHub.GetJson(_url);

            stockQuoteViewModel.Company = JsonConvert.DeserializeObject <Company>(json, settings);

            return(View("StockQuote", stockQuoteViewModel));
        }
Exemplo n.º 5
0
        public async Task <IActionResult> PortfolioAsync()
        {
            var userId = _userManager.GetUserId(User);

            //Retrieves data from database
            StockPortfolioViewModel stockPortfolioViewModel = new StockPortfolioViewModel();
            PlayerProfile           player = _ProfileRepository.FindByCondition(p => p.UserId == userId).First();

            stockPortfolioViewModel.PlayProfile = player;
            IEnumerable <PlayerStock> playerStocks = _stockRepository.FindByCondition(p => p.ProfileId == player.Id);

            if (playerStocks.Any())
            {
                //Builds API Url from list of stocks the player owns
                StringBuilder sb = new StringBuilder();
                sb.Append($@"https://cloud.iexapis.com/stable/stock/market/batch/?types=quote&token={_iexcloudKey}&symbols=");


                for (int i = 0; i < playerStocks.Count(); i++)
                {
                    if (i == playerStocks.Count() - 1)
                    {
                        sb.Append(playerStocks.ElementAt(i).StockSymbol);
                    }
                    else
                    {
                        sb.Append(playerStocks.ElementAt(i).StockSymbol + ",");
                    }
                }
                _url = sb.ToString();



                //Gets real time stock quote for each stock player owns
                var json = await ApiHub.GetJson(_url);

                var root = JObject.Parse(json);
                List <StockQuote> stocksApi = new List <StockQuote>();
                foreach (var r in root)
                {
                    var stock = JsonConvert.DeserializeObject <StockQuote>(r.Value["quote"].ToString());
                    stocksApi.Add(stock);
                }


                List <PortfolioStock> stocks = new List <PortfolioStock>();
                foreach (var pStocks in playerStocks)
                {
                    StockQuote stock          = stocksApi.Where(s => s.Symbol == pStocks.StockSymbol).FirstOrDefault();
                    var        portfolioStock = new PortfolioStock();
                    portfolioStock.PlayerStockId = pStocks.Id;
                    portfolioStock.Symbol        = stock.Symbol;
                    portfolioStock.Name          = stock.CompanyName;
                    portfolioStock.CurrentPrice  = stock.LatestPrice;
                    portfolioStock.Change        = (decimal)stock.Change;
                    portfolioStock.PercentChange = stock.ChangePercent;
                    portfolioStock.Shares        = pStocks.Shares;
                    portfolioStock.PurchasePrice = pStocks.PurchasePrice;
                    portfolioStock.PurchaseDate  = pStocks.CreatedDate;
                    stocks.Add(portfolioStock);
                }

                foreach (var stock in stocks)
                {
                    stockPortfolioViewModel.TotalStockValue += stock.MarketValue;
                    stockPortfolioViewModel.TotalStockCost  += stock.TotalCost;
                    stockPortfolioViewModel.TotalTodaysGain += stock.TodaysGain;
                }
                stockPortfolioViewModel.Stocks = stocks;
            }

            return(View("Portfolio", stockPortfolioViewModel));
        }