コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }