Пример #1
0
        private void BuyProduct(string username, int productId)
        {
            try
            {
                User    user    = _system.GetUserByUsername(username);
                Product product = _system.GetProductByID(productId);

                _ui.DisplayUserBuysProduct(_system.BuyProduct(user, product));
            }
            catch (UserNotFoundException ex)
            {
                _ui.DisplayUserNotFound(ex.Username);
            }
            catch (ProductNotFoundException ex)
            {
                _ui.DisplayProductNotFound(ex.ProductId.ToString());
            }
            catch (InsufficientCreditsException ex)
            {
                _ui.DisplayInsufficientCash(ex.User, ex.Product);
            }
            catch (DeactivatedProductExcetion ex)
            {
                _ui.DisplayGeneralError($"Product {ex.Product.Name} is not active");
            }
        }
Пример #2
0
        public SystemController(ILineSystemUI ui, ILineSystem lineSystem)
        {
            this._ui     = ui;
            this._system = lineSystem;

            _adminCommands.Add(":quit", (s, i) => ui.Close());
            _adminCommands.Add(":q", (s, i) => ui.Close());
            _adminCommands.Add(":activate", (s, productId) =>
            {
                Product product = _system.GetProductByID(productId);
                product.Active  = true;
                ui.DisplayAdminCommandMessage($"Product {product.Name} is set to active");
            });
            _adminCommands.Add(":deactivate", (s, productId) =>
            {
                Product product = _system.GetProductByID(productId);
                product.Active  = false;
                ui.DisplayAdminCommandMessage($"Product {product.Name} is set to deactive");
            });
            _adminCommands.Add(":crediton", (s, productId) =>
            {
                Product product             = _system.GetProductByID(productId);
                product.CanBeBoughtOnCredit = true;
                ui.DisplayAdminCommandMessage($"Product {product.Name} can now be bought on credits");
            });
            _adminCommands.Add(":creditoff", (s, productId) =>
            {
                Product product             = _system.GetProductByID(productId);
                product.CanBeBoughtOnCredit = false;
                ui.DisplayAdminCommandMessage($"Product {product.Name} cannot be bought on credit now");
            });
            _adminCommands.Add(":addcredits", (username, amount) =>
            {
                User user = _system.GetUserByUsername(username);
                _system.AddCreditsToAccount(user, amount);
                ui.DisplayAdminCommandMessage($"{amount}DDK was added to {user.Username}'s account");
            });

            this._ui.CommandEntered += Ui_CommandEntered;
        }