Ejemplo n.º 1
0
 public void checkPort_Result_II()
 {
     string[] stock      = new string[] { "GOOG-20,MS-10", "MS-10,GOOG-10" };
     double[] check      = new double[] { 500.0, 300.0 };
     double[] stockValue = PortfolioStock.splitFileData(stock);
     CollectionAssert.AreNotEqual(check, stockValue);
 }
Ejemplo n.º 2
0
 public void checkPort_Result()
 {
     string[] stockValue = new string[] { "GOOG-20,MS-10", "MS-10,GOOG-10" };
     double[] v          = new double[] { 1500.0, 1000.0 };
     double[] checkValue = PortfolioStock.splitFileData(stockValue);
     CollectionAssert.AreEqual(checkValue, stockValue);
 }
Ejemplo n.º 3
0
        public void checkSumOFKeyValue_MS()
        {
            double stockValue = PortfolioStock.sumOfOnePortkeyAndPortValue("MS", 20);

            Assert.AreEqual(1000, stockValue);
            Assert.AreNotEqual(2000, stockValue);
            Assert.AreNotEqual(-300, stockValue);
        }
Ejemplo n.º 4
0
        public void checkSumOFKeyValue_GOOG()
        {
            double stockValue = PortfolioStock.sumOfOnePortkeyAndPortValue("GOOG", 10);

            Assert.AreEqual(500, stockValue);
            Assert.AreNotEqual(600, stockValue);
            Assert.AreNotEqual(-200, stockValue);
        }
Ejemplo n.º 5
0
        public void checkPort_II()
        {
            string[] getFileData = PortfolioStock.getStockFile(@"C:\Users\vinothkanth\Desktop\PortFolioData.txt");

            string[] getSingleLine = PortfolioStock.fetchSingleLine(getFileData);

            double[] getStockValue = PortfolioStock.splitFileData(getSingleLine);

            double[] stockValue = new double[] { 18500, 6000, 2000 };
            Assert.AreNotEqual(stockValue, getStockValue);
        }
Ejemplo n.º 6
0
        public void checkPortResult()
        {
            string[] getFileData = PortfolioStock.getStockFile(@"C:\Users\vinothkanth\Desktop\PortFolioData.txt");

            string[] getSingleLine = PortfolioStock.fetchSingleLine(getFileData);

            double[] getStockValue = PortfolioStock.splitFileData(getSingleLine);

            double[] stockValue = new double[3];
            stockValue[0] = 3000.0;
            stockValue[1] = 8000.0;
            stockValue[2] = 13500.0;
            CollectionAssert.AreEqual(stockValue, getStockValue);
        }
Ejemplo n.º 7
0
 public void AutoTellTest()
 {
     try
     {
         PortfolioStock.getStockFile(@"C:\Users\vinothkanth\Desktop\PortFolioData.txt");
     }
     catch (System.IO.FileNotFoundException e)
     {
         StringAssert.Contains(e.Message, "File Not Found Exception");
         return;
     }
     catch (Exception e)
     {
         StringAssert.Contains(e.Message, "File Not Found Exception");
         return;
     }
     Assert.Fail("No Exception was through");
 }
Ejemplo n.º 8
0
 public void UnknownFile()
 {
     string[] stockData = PortfolioStock.getStockFile(@"C:\Users\vinothkanth\Desktop\Por");
     string[] checkData = new string[] {};
     CollectionAssert.AreEqual(checkData, stockData);
 }
Ejemplo n.º 9
0
        public void checkPortValueForGoog()
        {
            double stockValue = PortfolioStock.fetchStockValue("GOOG");

            Assert.AreNotEqual(-49.65, stockValue);
        }
Ejemplo n.º 10
0
        public void checkSumOFKeyValueNotEqual_INFS()
        {
            double stockValue = PortfolioStock.sumOfOnePortkeyAndPortValue("INFS", 50);

            Assert.AreNotEqual(1000, stockValue);
        }
Ejemplo n.º 11
0
        public void splitDashNotEqual()
        {
            double stockValue = PortfolioStock.splitWordsAsDash(new string[] { "GOOG", "10" });

            Assert.AreNotEqual(400, stockValue);
        }
Ejemplo n.º 12
0
 public void FileNotEmpty()
 {
     string[] stockData = PortfolioStock.getStockFile(@"C:\Users\vinothkanth\Desktop\PortFolioData.txt");
     string[] checkData = new string[] { };
     CollectionAssert.AreNotEqual(checkData, stockData);
 }
Ejemplo n.º 13
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));
        }
Ejemplo n.º 14
0
            public async Task <Unit> Handle(Command request, CancellationToken cancellationToken)
            {
                var user = await _userManager.FindByNameAsync(_userAccessor.GetCurrentUserName());

                var apiKey = Environment.GetEnvironmentVariable("API_KEY");

                var portfolioStock = await _context.Stocks
                                     .Where(s => s.Symbol == request.Symbol).Where(u => u.AppUser == user)
                                     .SingleOrDefaultAsync();

                var client      = new RestClient("https://cloud.iexapis.com/stable/stock/{symbol}");
                var restRequest = new RestRequest("/quote/latestprice", Method.GET);

                restRequest.AddParameter("symbol", request.Symbol, ParameterType.UrlSegment);
                restRequest.AddHeader("Content-Type", "application/json");
                restRequest.AddQueryParameter("token", apiKey);
                restRequest.RequestFormat = DataFormat.Json;
                var restResponse = await client.ExecuteTaskAsync(restRequest, CancellationToken.None);

                dynamic api = JObject.Parse(restResponse.Content);

                var transactionPrice = (float)api.latestPrice * request.Amount;

                Console.WriteLine(transactionPrice);

                if (portfolioStock == null)
                {
                    var stock = new PortfolioStock
                    {
                        PurchaseDate  = DateTime.Now,
                        Amount        = request.Amount,
                        Symbol        = api.symbol,
                        CompanyName   = api.companyName,
                        Exchange      = api.primaryExchange,
                        PurchasePrice = api.latestPrice,
                        Price         = transactionPrice,
                        YearHigh      = api.week52High,
                        Id            = new Guid(),
                        AppUser       = user
                    };

                    Console.WriteLine("New Stock was added");
                    _context.Stocks.Add(stock);
                }
                else
                {
                    portfolioStock.Amount       += request.Amount;
                    portfolioStock.PurchaseDate  = DateTime.Now;
                    portfolioStock.PurchasePrice = (transactionPrice + (float)portfolioStock.Price) /
                                                   portfolioStock.Amount;
                    portfolioStock.Price += transactionPrice;
                    Console.WriteLine("Your Stock was Updated");
                    _context.Stocks.Update(portfolioStock);
                }

                var transaction = new Transaction
                {
                    TransactionDate   = DateTime.Now,
                    TransactionAmount = request.Amount,
                    PurchasePrice     = api.latestPrice,
                    AppUser           = user,
                    Type             = "Purchase",
                    Symbol           = request.Symbol,
                    TransactionPrice = transactionPrice,
                    Id          = new Guid(),
                    CompanyName = api.companyName
                };

                var cost = (float)api.latestPrice * request.Amount;

                var walletTransaction = new WalletTransaction
                {
                    Id              = new Guid(),
                    Type            = "Stock Purchase",
                    TransactionDate = DateTime.Now,
                    Amount          = -cost,
                    AppUser         = user
                };


                user.CashAmount = user.CashAmount - cost;

                _context.WalletTransactions.Add(walletTransaction);
                _context.Transactions.Add(transaction);

                var success = await _context.SaveChangesAsync() > 0;

                if (success)
                {
                    return(Unit.Value);
                }

                throw new Exception("Problem Buying Stock");
            }