Example #1
0
        public ViewModelUpdater(
            IAlphaVantageAPI priceDataSource,
            IHistoricalDatabase historicalDatabase,
            ViewModel viewModel
            )
        {
            _priceDataSource           = priceDataSource;
            viewModel.PropertyChanged += (sender, e) =>
            {
                switch (e.PropertyName)
                {
                case "ApiKey":
                    Update(viewModel.ApiKey, viewModel.Stocks);
                    foreach (var stock in viewModel.Stocks)
                    {
                        var prices = priceDataSource.GetHistoricalPrices(stock.Ticker, 10, viewModel.ApiKey);
                        historicalDatabase.Update(stock.Ticker, prices);
                    }
                    break;

                case "SelectedStock":
                    var historicalPrices = historicalDatabase.GetPrices(viewModel.SelectedStock.Ticker);
                    viewModel.SelectedHistoricalPrices.Clear();
                    historicalPrices.ForEach(viewModel.SelectedHistoricalPrices.Add);
                    break;

                default:
                    throw new Exception($"Unhandled: {e.PropertyName}");
                }
            };
        }