public ProductsListScreen(IProductsRepository productsRepository, IPresenter presenter, Func <IMainScreen> mainScreen, IDataBus dataBus, Func <IProductScreen> productScreen) { this.productsRepository = productsRepository; this.presenter = presenter; this.mainScreen = new Lazy <IMainScreen>(mainScreen); this.dataBus = dataBus; this.productScreen = new Lazy <IProductScreen>(productScreen); dataBus.Remove(Constants.DataKeys.SelectedProduct); }
public IScreen HandleInput(string input) { if (input == "q") { dataBus.Remove(Constants.DataKeys.SelectedProduct); } else { int quantity = -1; if (!int.TryParse(input, out quantity) || quantity < 1) { throw new InvalidInputException("Invalid quantity"); } User currentUser = dataBus.GetData <User>(Constants.DataKeys.User) .Assert(() => new InvalidOperationException("Select user")); transactionsFacade.Buy(currentUser.Name, _product.Id, quantity); dataBus.SetData(Constants.DataKeys.User, usersRepository.GetByName(currentUser.Name)); } return(mainScreen.Value); }