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"); } }