Beispiel #1
0
 public void ExecuteTransactionTest()
 {
     Assert.AreEqual(false, lineSystem.ExecuteTransaction(null));
     Assert.AreEqual(false, lineSystem.ExecuteTransaction(new BuyTransaction(DateTime.Now, testUser, new Product("test", 10000000, true))));
     Assert.AreEqual(true, lineSystem.ExecuteTransaction(new BuyTransaction(DateTime.Now, testUser, new Product("test1", 100, true))));
     lineSystem.Transactions.RemoveAt(4);
     Assert.AreEqual(true, lineSystem.ExecuteTransaction(new BuyTransaction(DateTime.Now, testUser, new Product("test2", 99, true))));
     lineSystem.Transactions.RemoveAt(4);
     Assert.AreEqual(true, lineSystem.ExecuteTransaction(new InsertCashTransaction(DateTime.Now, testUser, 100)));
     lineSystem.Transactions.RemoveAt(4);
 }
        private void QuickBuy(string[] inputArray, int inputCount, User user)
        {
            Product        product;
            BuyTransaction transaction;
            int            id;

            if (int.TryParse(inputArray[1], out id))
            {
                product = LineSystem.GetProduct(id);

                if (product != null && product.Active)
                {
                    transaction = LineSystem.BuyProduct(user, product);

                    if (LineSystem.ExecuteTransaction(transaction))
                    {
                        UI.DisplayUserBuysProduct(transaction);
                    }
                    else
                    {
                        UI.DisplayInsufficientCash(user, product);
                    }
                }
                else
                {
                    UI.DisplayProductNotFound(inputArray[1]);
                }
            }
            else
            {
                UI.DisplayGeneralError(inputArray[1] + " is not a invalid productID");
            }
        }
        public CommandParser(LineSystem lineSystem, ILineSystemUI ui)
        {
            LineSystem = lineSystem;
            UI         = ui;

            adminCommands.Add(":close", args => UI.Close());
            adminCommands.Add(":activate", args =>
            {
                ChangeProductBoolField(":activate", args, ProductBoolField.Active, true);
            });
            adminCommands.Add(":deactivate", args =>
            {
                ChangeProductBoolField(":deactivate", args, ProductBoolField.Active, false);
            });
            adminCommands.Add(":crediton", args =>
            {
                ChangeProductBoolField(":crediton", args, ProductBoolField.CanBeBoughtOnCredit, true);
            });
            adminCommands.Add(":creditoff", args =>
            {
                ChangeProductBoolField(":creditoff", args, ProductBoolField.CanBeBoughtOnCredit, false);
            });
            adminCommands.Add(":addcredits", args =>
            {
                InsertCashTransaction transaction;
                User user;
                int amount;

                if (IsValidArgs(":addcredits", args, 2))
                {
                    user = LineSystem.GetUser(args[0]);

                    if (user != null)
                    {
                        if (args[1].TryToCredit(out amount))
                        {
                            transaction = LineSystem.AddCreditsToAccount(user, amount);
                            UI.DisplayAdminAddedCredits(transaction);
                            LineSystem.ExecuteTransaction(transaction);
                        }
                        else
                        {
                            UI.DisplayGeneralError(args[1] + " is not a invalid cash amount");
                        }
                    }
                    else
                    {
                        UI.DisplayUserNotFound(args[0]);
                    }
                }
            });
        }
        private void MultiBuy(string[] inputArray, int inputCount, User user)
        {
            List <BuyTransaction> transactions = new List <BuyTransaction>();
            Product product;
            int     amount, id, price;

            if (int.TryParse(inputArray[1], out amount) && amount > 0)
            {
                if (int.TryParse(inputArray[2], out id))
                {
                    product = LineSystem.GetProduct(id);

                    if (product != null && product.Active)
                    {
                        for (int i = 0; i < amount; i++)
                        {
                            transactions.Add(LineSystem.BuyProduct(user, product));
                        }

                        price = transactions[0].Amount * amount;


                        if (price <= user.Balance)
                        {
                            foreach (var transaction in transactions)
                            {
                                LineSystem.ExecuteTransaction(transaction);
                            }

                            UI.DisplayUserBuysProduct(transactions[0], amount);
                        }
                        else
                        {
                            UI.DisplayInsufficientCash(user, product, amount);
                        }
                    }
                    else
                    {
                        UI.DisplayProductNotFound(inputArray[2]);
                    }
                }
                else
                {
                    UI.DisplayGeneralError(inputArray[2] + " is not a valid productID");
                }
            }
            else
            {
                UI.DisplayGeneralError(inputArray[1] + " is not a valid amount");
            }
        }