Exemplo n.º 1
0
 public void BuyProduct(User currentUser, Product chosenProduct)
 {
     BuyTransaction transaction = new BuyTransaction(currentUser, chosenProduct);
     ExecuteTransaction(transaction);
 }
        public void ParseCmd(string userInput)
        {
            string[] cmdSplitter = userInput.Split(' ');

            if (cmdSplitter.Count() == 0)
            {
                //Kommer brugeren til at trykke enter uden at have skrevet noget, sker der intet.
            }
            else if (cmdSplitter[0].StartsWith(":"))
            {
                var dictionaryValue = _adminCmd.FirstOrDefault(dv => dv.Key.Equals(cmdSplitter[0]));

                if (dictionaryValue.Value != null)
                {
                    _adminCmd[dictionaryValue.Key].Invoke(cmdSplitter);
                }

                else
                {
                    _CLI.DisplayAdminCommandNotFoundMessage(userInput);
                }
            }

            else
            {
                if (cmdSplitter.Count() == 1)
                {
                    _CLI.DisplayUserInfo(cmdSplitter[0]);
                }

                else if (cmdSplitter.Count() == 2)
                {
                    bool isDigitOnly = true;

                    foreach (char checker in cmdSplitter[1])
                    {
                        if (checker < '0' || checker > '9')
                            isDigitOnly = false;
                    }

                    if (isDigitOnly)
                        _CLI.DisplayUserBuysProduct(cmdSplitter[0], Convert.ToUInt32(cmdSplitter[1]));

                    else
                        _CLI.DisplayProductIDNotNumber(cmdSplitter[1]);
                }

                else if (cmdSplitter.Count() == 3)
                {

                    bool isDigitOnly = true;

                    foreach (char checker in cmdSplitter[1])
                    {
                        if (checker < '0' || checker > '9')
                            isDigitOnly = false;
                    }

                    if (!isDigitOnly)
                        _CLI.DisplayProductIDNotNumber(cmdSplitter[1]);

                    foreach (char checker in cmdSplitter[2])
                    {
                        if (checker < '0' || checker > '9')
                            isDigitOnly = false;
                    }

                    if (!isDigitOnly)
                        _CLI.DisplayProductIDNotNumber(cmdSplitter[2]);

                    foreach (User user in _lineSystem.userList)
                    {
                        if (user.userName == cmdSplitter[0])
                        {
                            foreach (Product product in _lineSystem.productList)
                            {
                                if (product.productID == Convert.ToUInt32(cmdSplitter[2]))
                                {
                                    if (user.balance < (product.price * Convert.ToInt32(cmdSplitter[1])))
                                    {
                                        throw new InsufficientCreditsException("Du har ikke råd til denne vare. Indsæt venligst flere penge på din konto og prøv igen.");
                                    }

                                    for (int i = 0; i < Convert.ToInt32(cmdSplitter[1]); ++i)
                                    {
                                        _lineSystem.BuyProduct(user, product);
                                    }

                                    BuyTransaction buyTransaction = new BuyTransaction(user, product);
                                    _CLI.DisplayUserBuysProduct(user.userName, Convert.ToInt32(cmdSplitter[1]), product);
                                }
                            }
                        }
                    }
                }

                else
                {
                    _CLI.DisplayTooManyArgumentsError();
                }
            }
        }