public void GetProductTypeTest(string productName)
        {
            ProductType result = ProductTypeOperations.GetProductType(productName);

            Assert.IsNotNull(result);
            Assert.AreEqual(result.Type, productName);
        }
Example #2
0
        private static Order EditOrder(Order orderToEdit)
        {
            bool doneEditing  = false;
            bool hadError     = false;
            int  fieldChanged = 0;

            while (!doneEditing)
            {
                //display order info with edit options, coloring items that have been changed
                OffsetTop();
                int fieldNameFormatter = -18;
                int fieldValueLength   = 0;
                Console.ForegroundColor = EmphasisColor;
                Console.WriteLine("\tEdit Order");
                Console.WriteLine("\t-----------------------------------");
                Console.ResetColor();
                Console.WriteLine("\t" + "   {0," + fieldNameFormatter + "}{1," + fieldValueLength + "}", "Order Date:", orderToEdit.Date.ToString("d"));
                Console.WriteLine("\t" + "   {0," + fieldNameFormatter + "}{1," + fieldValueLength + "}", "Order #:", orderToEdit.Number);
                Console.ForegroundColor = EmphasisColor;
                Console.Write("\t1. ");
                Console.ResetColor();
                if (fieldChanged == 1)
                {
                    Console.ForegroundColor = SuccessColor;
                }
                Console.WriteLine("{0," + fieldNameFormatter + "}{1," + fieldValueLength + "}", "Customer Name:", orderToEdit.CustomerName);
                Console.ForegroundColor = EmphasisColor;
                Console.Write("\t2. ");
                Console.ResetColor();
                if (fieldChanged == 2)
                {
                    Console.ForegroundColor = SuccessColor;
                }
                Console.WriteLine("{0," + fieldNameFormatter + "}{1," + fieldValueLength + "}", "State:", orderToEdit.State);
                Console.WriteLine("\t" + "   {0," + fieldNameFormatter + "}{1," + fieldValueLength + ":P}", "Tax Percent:", orderToEdit.TaxPercent * 0.01M);
                Console.ForegroundColor = EmphasisColor;
                Console.Write("\t3. ");
                Console.ResetColor();
                if (fieldChanged == 3)
                {
                    Console.ForegroundColor = SuccessColor;
                }
                Console.WriteLine("{0," + fieldNameFormatter + "}{1," + fieldValueLength + "}", "Product Type:", orderToEdit.ProductType);
                Console.ForegroundColor = EmphasisColor;
                Console.Write("\t4. ");
                Console.ResetColor();
                if (fieldChanged == 4)
                {
                    Console.ForegroundColor = SuccessColor;
                }
                Console.WriteLine("{0," + fieldNameFormatter + "}{1," + fieldValueLength + ":n0}" + " sq feet", "Area:", orderToEdit.Area);
                Console.ResetColor();
                if (fieldChanged == 3)
                {
                    Console.ForegroundColor = SuccessColor;
                }
                Console.WriteLine("\t" + "   {0," + fieldNameFormatter + "}{1," + fieldValueLength + ":C}", "Cost per sq ft:", orderToEdit.CostPerSquareFoot);
                Console.WriteLine("\t" + "   {0," + fieldNameFormatter + "}{1," + fieldValueLength + ":C}", "Labor cost/sq ft:", orderToEdit.LaborCostPerSquareFoot);
                if (fieldChanged == 4)
                {
                    Console.ForegroundColor = SuccessColor;
                }
                Console.WriteLine("\t" + "   {0," + fieldNameFormatter + "}{1," + fieldValueLength + ":C}", "Material Cost:", orderToEdit.MaterialCost);
                Console.WriteLine("\t" + "   {0," + fieldNameFormatter + "}{1," + fieldValueLength + ":C}", "Labor Cost:", orderToEdit.LaborCost);
                if (fieldChanged == 2)
                {
                    Console.ForegroundColor = SuccessColor;
                }
                Console.WriteLine("\t" + "   {0," + fieldNameFormatter + "}{1," + fieldValueLength + ":C}", "Tax:", orderToEdit.Tax);
                Console.WriteLine("\t" + "   {0," + fieldNameFormatter + "}{1," + fieldValueLength + ":C}", "Total:", orderToEdit.Total);
                Console.ResetColor();
                Console.ForegroundColor = EmphasisColor;
                Console.WriteLine("\t-----------------------------------");

                //display confirm/cancel options
                Console.ForegroundColor = EmphasisColor;
                Console.Write("\t5. ");
                Console.WriteLine("Confirm edit");
                Console.Write("\t6. ");
                Console.WriteLine("Cancel and return to menu");
                Console.ResetColor();
                Console.WriteLine();

                //display error message
                if (hadError)
                {
                    Console.ForegroundColor = ErrorColor;
                    Console.WriteLine("\tInvalid entry.");
                    Console.WriteLine();
                    Console.ResetColor();
                }

                // get user input
                Console.ForegroundColor = PromptColor;
                Console.Write("\tEnter an option: ");
                Console.ForegroundColor = EmphasisColor;
                string userInput = Console.ReadLine().Trim();
                Console.ResetColor();

                switch (userInput)
                {
                case "1":
                case "1.":
                    //enter new name
                    Console.Clear();
                    string newName = "";
                    while (string.IsNullOrEmpty(newName))
                    {
                        Console.WriteLine();
                        Console.WriteLine();
                        Console.ForegroundColor = PromptColor;
                        Console.Write("\tEnter the new customer name: ");
                        Console.ForegroundColor = EmphasisColor;
                        newName = Console.ReadLine();
                        Console.ResetColor();
                        Console.Clear();
                    }
                    orderToEdit.CustomerName = newName;
                    fieldChanged             = 1;
                    hadError = false;
                    break;

                case "2":
                case "2.":
                    //enter new state
                    Console.Clear();
                    orderToEdit.State = PromptForValidState("Enter the new state: ");
                    orderToEdit       = OrderOperations.CalculateRemainingOrderFields(orderToEdit, false);
                    Console.Clear();
                    fieldChanged = 2;
                    hadError     = false;
                    break;

                case "3":
                case "3.":
                    //enter new product type
                    Console.Clear();
                    orderToEdit.ProductType = PromptForValidProductType("Enter the new product type: ").Type;
                    orderToEdit             = OrderOperations.CalculateRemainingOrderFields(orderToEdit, false);
                    Console.Clear();
                    fieldChanged = 3;
                    hadError     = false;
                    break;

                case "4":
                case "4.":
                    //enter new area
                    Console.Clear();
                    ProductType currentProductType = ProductTypeOperations.GetProductType(orderToEdit.ProductType);
                    orderToEdit.Area = PromptForValidArea(currentProductType);
                    orderToEdit      = OrderOperations.CalculateRemainingOrderFields(orderToEdit, false);
                    Console.Clear();
                    fieldChanged = 4;
                    hadError     = false;
                    break;

                case "5":
                case "5.":
                    //confirm order
                    Console.Clear();
                    doneEditing = true;
                    break;

                case "6":
                case "6.":
                    //cancel and return to main menu
                    Console.Clear();
                    return(null);

                default:
                    //invalid input
                    Console.Clear();
                    hadError = true;
                    break;
                }
            }

            return(orderToEdit);
        }
Example #3
0
        private static ProductType PromptForValidProductType(string prompt, bool extraInfo = false)
        {
            ProductType        productType  = null;
            List <ProductType> productTypes = ProductTypeOperations.GetAllProductTypes();
            string             userInput    = "";
            bool validProduct         = false;
            bool error                = false;
            bool displayedAllProducts = false;

            while (!validProduct)
            {
                if (!displayedAllProducts && (!extraInfo || error))
                {
                    OffsetTop();
                }

                //display 10 current products and give them the chance to see all of them
                if (!displayedAllProducts)
                {
                    DisplayProductTypes(false);
                }

                //if there was an error in the last time through the loop
                if (error)
                {
                    Console.ForegroundColor = ErrorColor;
                    Console.WriteLine("\tInvalid Product.");
                    Console.WriteLine();
                }

                //get the user input
                Console.ForegroundColor = PromptColor;
                Console.Write("\t" + prompt);
                Console.ForegroundColor = EmphasisColor;
                userInput = Console.ReadLine().Trim();
                Console.ResetColor();
                Console.Clear();

                if (userInput == "") //they want to display all product types
                {
                    OffsetTop();
                    DisplayProductTypes(true);
                    displayedAllProducts = true;
                }
                else if (ProductTypeOperations.IsProductType(userInput))
                {
                    productType = ProductTypeOperations.GetProductType(userInput);
                    Console.Clear();

                    if (extraInfo)
                    {
                        OffsetTop();
                        Console.WriteLine("\t{0} cost per square foot: {1:C}", productType.Type, productType.CostPerSquareFoot);
                        Console.WriteLine("\t{0} labor cost per square foot: {1:C}", productType.Type, productType.LaborCostPerSquareFoot);
                        Console.WriteLine("\t----------------------------------------");
                        Console.WriteLine();
                    }

                    validProduct = true;
                }
                else
                {
                    error = true;
                    if (displayedAllProducts) //the console was just cleared, so we don't want the error list to go away
                    {
                        OffsetTop();
                        DisplayProductTypes(true);
                    }
                }
            }
            return(productType);
        }