private async void InitializeAsync()
        {
            try
            {
                var stocks =
                    (await userStockMappingDataService.GetStocksForUserAsync(
                         userManager.CurrentUser.UserId))
                    .Select(
                        x =>
                {
                    var liveStockData = new LiveStockData
                    {
                        Name             = x.Stock.Name,
                        PreviousClose    = x.Stock.PreviousClose,
                        YearHigh         = x.Stock.YearHigh,
                        Price            = x.Stock.Price,
                        Symbol           = x.Stock.Symbol,
                        YearLow          = x.Stock.YearLow,
                        IsPositiveChange = x.Stock.PreviousClose <= x.Stock.Price,
                        PercentageChange = Math.Round(((x.Stock.Price - x.Stock.PreviousClose) * 100 / x.Stock.PreviousClose), 2).ToString() + "%",
                    };
                    return(liveStockData);
                })
                    .ToList();

                WatchList = new BindingList <LiveStockData>(stocks);
                RealTimePriceJob();
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
            }
        }
Exemplo n.º 2
0
        public async void Execute(object parameter)
        {
            try
            {
                // Text search - getting the most relevant one for now.
                var searchedStock = (await stockService.TickerSearchAsync(watchListViewModel.Symbol)).ToList().FirstOrDefault();

                // Update the newly searched record if not already exists.
                if (searchedStock != null)
                {
                    if (!watchListViewModel.WatchList.Any(x => x.Symbol == searchedStock.Symbol))
                    {
                        var stockDetails = await stockService.GetStockDataAsync(searchedStock.Symbol);

                        watchListViewModel.Stock = stockDetails;

                        var liveStockInfo = new LiveStockData
                        {
                            Name             = stockDetails.Name,
                            PreviousClose    = stockDetails.PreviousClose,
                            YearHigh         = stockDetails.YearHigh,
                            Price            = stockDetails.Price,
                            Symbol           = stockDetails.Symbol,
                            YearLow          = stockDetails.YearLow,
                            IsPositiveChange = (stockDetails.PreviousClose <= stockDetails.Price),
                            PercentageChange = Math.Round(((stockDetails.Price - stockDetails.PreviousClose) * 100 / stockDetails.PreviousClose), 2).ToString() + "%",
                        };

                        watchListViewModel.WatchList.Add(liveStockInfo);
                        await userStockMappingDataService.AddStockForUserAsync(
                            new UserStockMapping()
                        {
                            StockId = stockDetails.Id,
                            UserId  = userManager.CurrentUser.UserId,
                            Stock   = stockDetails,
                        },
                            stockDetails.Symbol);
                    }
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
            }
        }