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); } }
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); } }