Ejemplo n.º 1
0
        public void OrderToStringTests()
        {
            FlooringProduct product = new FlooringProduct
            {
                ProductType            = "Wood",
                CostPerSquareFoot      = 5.15m,
                LaborCostPerSquareFoot = 4.75m
            };
            FlooringTax tax = new FlooringTax
            {
                TaxRate           = 6.25m,
                StateAbbreviation = "OH"
            };
            FlooringOrder order = new FlooringOrder()
            {
                OrderNumber            = 1,
                date                   = new DateTime(2013, 6, 1, 0, 00, 00),
                CustomerName           = "Wise",
                TaxRate                = tax.TaxRate,
                State                  = "OH",
                ProductType            = product.ProductType,
                Area                   = 100.00m,
                CostPerSquareFoot      = 5.15m,
                LaborCostPerSquareFoot = 4.75m
            };
            string actual   = OrderMapper.ToString(order);
            string expected = "1||6/1/2013 12:00:00 AM||Wise||OH||6.25||Wood||100.00||5.15||4.75||515.00||475.00||61.88||1051.88";

            Assert.AreEqual(expected, actual);
        }
Ejemplo n.º 2
0
        public void Create(string datestring, FlooringOrder newOrder)
        {
            List <FlooringOrder> orders = LoadOrders(datestring);

            orders.Add(newOrder);
            SaveOrder(orders, datestring);
        }
Ejemplo n.º 3
0
 public void DisplayOrderDetails(FlooringOrder order)
 {
     Console.WriteLine($"{order.OrderNumber} | {order.date.ToShortDateString()}");
     Console.WriteLine($"{order.CustomerName}");
     Console.WriteLine($"{order.State}");
     Console.WriteLine($"Product: {order.ProductType}");
     Console.WriteLine($"Materials: {Math.Round(order.MaterialCost, 2)}");
     Console.WriteLine($"Labor: {Math.Round(order.LaborCost, 2)}");
     Console.WriteLine($"Tax: {Math.Round(order.Tax, 2)}");
     Console.WriteLine($"Total: {Math.Round(order.Total, 2)}");
 }
Ejemplo n.º 4
0
        // CREATE
        public void Create(string datestring, FlooringOrder newOrder)
        {
            string filepath = $"Orders_{datestring}.txt";

            if (!File.Exists(filepath))
            {
                File.Create(filepath).Close();
            }
            List <FlooringOrder> orders = LoadOrders(datestring);

            newOrder.OrderNumber = nextOrderNumber(orders);
            orders.Add(newOrder);
            SaveOrders(orders, datestring);
            //return newOrder;
        }
Ejemplo n.º 5
0
        public void Update(string datestring, FlooringOrder newOrder)
        {
            var orders = LoadOrders(datestring);

            // Loop until find the index, and modify way
            for (int i = 0; i < orders.Count; i++)
            {
                if (orders[i].OrderNumber == newOrder.OrderNumber)
                {
                    orders[i] = newOrder;
                    break;
                }
            }
            SaveOrder(orders, datestring);
        }
Ejemplo n.º 6
0
        public EditOrderResponse EditOrder(string datestring, FlooringOrder newOrder)
        {
            EditOrderResponse response = new EditOrderResponse();

            try
            {
                _orderRepository.Update(datestring, newOrder);
            }
            catch (Exception e)
            {
                response.Success = false;
                response.Message = e.Message;
            }
            response.Success  = true;
            response.newOrder = newOrder;
            return(response);
        }
Ejemplo n.º 7
0
        // UPDATE
        public void Update(string datestring, FlooringOrder newOrder)
        {
            var orders = LoadOrders(datestring);

            // Loop until find the index, and modify way
            for (int i = 0; i < orders.Count; i++)
            {
                if (orders[i].OrderNumber == newOrder.OrderNumber)
                {
                    orders[i] = newOrder;
                    break;
                }
            }
            SaveOrders(orders, datestring);
            //int index = _orders.FindIndex((FlooringOrder c) => c.Id == id);
            //if (index >= 0)
            //{
            //    _orders[index] = newFlooringOrderInfo;
            //}
        }
Ejemplo n.º 8
0
        public void OrderFromStringTest(string row, int id, string name, string abbreviation, decimal taxRate, string productType, decimal area, decimal materialCostPerSquareFoot, decimal laborCostPerSquareFoot, decimal materialCost, decimal LaborCost, decimal Tax, decimal Total)
        {
            FlooringOrder actual = OrderMapper.ToOrder(row);
            //FlooringProduct product = new FlooringProduct
            //{
            //    ProductType = productType,
            //    CostPerSquareFoot = materialCostPerSquareFoot,
            //    LaborCostPerSquareFoot = laborCostPerSquareFoot,
            //};
            //FlooringTax tax = new FlooringTax
            //{
            //    TaxRate = taxRate,
            //    StateAbbreviation = abbreviation
            //};
            FlooringOrder expected = new FlooringOrder()
            {
                OrderNumber            = id,
                CustomerName           = name,
                Area                   = area,
                TaxRate                = taxRate,
                State                  = abbreviation,
                ProductType            = productType,
                CostPerSquareFoot      = materialCostPerSquareFoot,
                LaborCostPerSquareFoot = laborCostPerSquareFoot,
            };

            Assert.AreEqual(expected.State, actual.State);
            Assert.AreEqual(expected.TaxRate, actual.TaxRate);
            Assert.AreEqual(expected.ProductType, actual.ProductType);
            Assert.AreEqual(expected.CostPerSquareFoot, actual.CostPerSquareFoot);
            Assert.AreEqual(expected.LaborCostPerSquareFoot, actual.LaborCostPerSquareFoot);
            Assert.AreEqual(expected.OrderNumber, actual.OrderNumber);
            Assert.AreEqual(expected.CustomerName, actual.CustomerName);
            Assert.AreEqual(expected.Area, actual.Area);
            Assert.AreEqual(expected.LaborCost, actual.LaborCost);
            Assert.AreEqual(expected.MaterialCost, actual.MaterialCost);
            Assert.AreEqual(expected.Tax, actual.Tax);
            Assert.AreEqual(expected.Total, actual.Total);
        }
Ejemplo n.º 9
0
        public static FlooringOrder ToOrder(string row)
        {
            FlooringOrder o = new FlooringOrder();

            string[] fields = row.Split(new string[] { "||" }, StringSplitOptions.None);

            o.OrderNumber            = int.Parse(fields[0]);
            o.date                   = DateTime.Parse(fields[1]);
            o.CustomerName           = fields[2];
            o.State                  = fields[3];
            o.TaxRate                = decimal.Parse(fields[4]);
            o.ProductType            = fields[5];
            o.Area                   = decimal.Parse(fields[6]);
            o.CostPerSquareFoot      = decimal.Parse(fields[7]);
            o.LaborCostPerSquareFoot = decimal.Parse(fields[8]);
            o.MaterialCost           = decimal.Parse(fields[9]);
            o.LaborCost              = decimal.Parse(fields[10]);
            //o.Tax = decimal.Parse(fields[11]);
            o.Total = decimal.Parse(fields[11]);

            return(o);
        }
Ejemplo n.º 10
0
 public void SaveOrder(FlooringOrder order)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 11
0
        public static string ToString(FlooringOrder order)
        {
            string format = "0.00";

            return($"{order.OrderNumber}||{order.date}||{order.CustomerName}||{order.State}||{order.TaxRate.ToString(format)}||{order.ProductType}||{order.Area}||{order.CostPerSquareFoot.ToString(format)}||{order.LaborCostPerSquareFoot.ToString(format)}||{order.MaterialCost.ToString(format)}||{order.LaborCost.ToString(format)}||{order.Tax.ToString(format)}||{order.Total.ToString(format)}");
        }
Ejemplo n.º 12
0
        public void Execute()
        {
            OrderManager manager = OrderManagerFactory.Create();

            Console.Clear();
            Console.WriteLine("Edit an order");
            Console.WriteLine("------------------------");
            bool     isValidDate = false;
            DateTime orderDate   = new DateTime();
            string   date1       = "";

            while (isValidDate == false)
            {
                date1 = io.GetDateFromUser("Please provide a date");

                orderDate = DateTime.ParseExact(date1, "MMddyyyy", CultureInfo.GetCultureInfo("en-us"));

                if (orderDate <= DateTime.Today)
                {
                    Console.WriteLine("Date must be later than today");
                }
                else
                {
                    isValidDate = true;
                }
            }

            DisplayOrderResponse response = manager.LoadOrders(date1);

            foreach (FlooringOrder order in response.Orders)
            {
                io.DisplayOrderDetails(order);
            }

            int  ordernumber   = -1;
            bool isValidNumber = false;

            while (isValidNumber == false)
            {
                string orderstring = io.GetStringFromUser("Please enter an order number.");
                if (!int.TryParse(orderstring, out ordernumber))
                {
                    Console.WriteLine("This did not work, please enter a number");
                }
                else
                {
                    foreach (var item in response.Orders)
                    {
                        if (item.OrderNumber == ordernumber)
                        {
                            newOrder = item;
                        }
                    }
                    isValidNumber = true;
                }
            }

            Console.WriteLine("");
            string newName = PromptUser("What would you like to change your name to?");

            if (newName != "")
            {
                while (!newName.All(c => Char.IsLetterOrDigit(c) || c == ',' || c == '_' || c == '.'))
                {
                    Console.WriteLine("Names must include either letters, numbers, spaces, periods, or commas (or any combonation thereof)");
                    newName = PromptUser("What is your name?");
                }
                newOrder.CustomerName = newName;
            }

            TaxStateResponse taxResponse = uo.LoadTax();
            FlooringTax      orderTax    = new FlooringTax();
            bool             isValidTax  = false;

            while (isValidTax == false)
            {
                foreach (FlooringTax tax in taxResponse.TaxRate)
                {
                    Console.WriteLine("  " + (taxResponse.TaxRate.IndexOf(tax) + 1) + ". " + tax.StateAbbreviation);
                }
                Console.WriteLine("Order is currently in " + newOrder.State);
                string newState = PromptUser("Enter a new state or press enter to continue.");
                if (newState != "")
                {
                    if (int.TryParse(newState, out int nation))
                    {
                        if (nation > 0 && nation <= taxResponse.TaxRate.Count)
                        {
                            newOrder.State   = taxResponse.TaxRate[nation - 1].StateAbbreviation;
                            newOrder.TaxRate = taxResponse.TaxRate[nation - 1].TaxRate;
                            isValidTax       = true;
                        }
                    }
                    else
                    {
                        Console.WriteLine("That state isn't in our region yet.");
                    }
                }
                else
                {
                    isValidTax = true;
                }
            }

            List <FlooringProduct> ProductList  = yo.LoadProducts();
            FlooringProduct        orderProduct = new FlooringProduct();
            bool isValidProduct = false;

            while (isValidProduct == false)
            {
                foreach (FlooringProduct prod in ProductList)
                {
                    Console.Write("  " + (ProductList.IndexOf(prod) + 1) + ". " + prod.ProductType);
                    Console.Write("   Cost per sqft $" + prod.CostPerSquareFoot);
                    Console.Write("   Cost for Labor per sqft $" + prod.LaborCostPerSquareFoot);
                    Console.WriteLine("\n");
                }
                Console.WriteLine("You have already chosen " + newOrder.ProductType);
                string newProduct = PromptUser("Please specifiy a different product or press enter to continue");
                if (newProduct != "")
                {
                    if (int.TryParse(newProduct, out int supply))
                    {
                        if (supply > 0 && supply <= ProductList.Count)
                        {
                            newOrder.ProductType            = ProductList[supply - 1].ProductType;
                            newOrder.LaborCostPerSquareFoot = ProductList[supply - 1].LaborCostPerSquareFoot;
                            newOrder.CostPerSquareFoot      = ProductList[supply - 1].CostPerSquareFoot;
                            isValidProduct = true;
                        }
                    }
                    else
                    {
                        Console.WriteLine("That product isn't available yet.");
                    }
                }
                else
                {
                    isValidProduct = true;
                }
            }

            decimal area1       = 0;
            bool    isValidArea = false;

            while (isValidArea == false)
            {
                area1 = newOrder.Area;
                string area = PromptUser("Please enter a new area or press enter to continue");

                if (area != "")
                {
                    if (decimal.TryParse(area, out area1))
                    {
                        if (area1 < 100)
                        {
                            Console.WriteLine("You must enter a positive amount above 100");
                            Console.WriteLine("Please enter a valid square footage.");
                        }
                        else
                        {
                            newOrder.Area = area1;
                            isValidArea   = true;
                        }
                    }
                }
                else
                {
                    isValidArea = true;
                }
            }

            //ask user for order number
            //if order exisits - ask user for each piece of order data && display exisiting data
            //if user presses Enter key without entering data - leave existing data in place

            //Only CustomerName, State, ProductType, Area can be changed
            //Order date may NOT change

            Console.Clear();
            io.DisplayOrderDetails(newOrder);

            bool isSave = false;

            while (isSave == false)
            {
                string place = PromptUser("Would you like to place this order? Please enter yes or no");
                if (place.ToLower() == "yes")
                {
                    EditOrderResponse editResponse = manager.EditOrder(date1, newOrder);  //still saving the new file even if selecting no
                    isSave = true;
                    // save final to file with approp date
                }
                else if (place.ToLower() == "no")
                {
                    isSave = true;
                    //return to main menu
                }
                else
                {
                    Console.WriteLine("Please enter yes or no");
                }
            }
            Console.WriteLine("Press any key to continue...");
            Console.ReadKey();
        }
Ejemplo n.º 13
0
        public void Execute()
        {
            OrderManager manager = OrderManagerFactory.Create();

            Console.Clear();
            Console.WriteLine("Remove an order");
            Console.WriteLine("------------------------");
            bool     isValidDate = false;
            DateTime orderDate   = new DateTime();
            string   date1       = "";

            while (isValidDate == false)
            {
                date1 = io.GetDateFromUser("Please provide a date");

                orderDate = DateTime.ParseExact(date1, "MMddyyyy", CultureInfo.GetCultureInfo("en-us"));

                if (orderDate <= DateTime.Today)
                {
                    Console.WriteLine("Date must be later than today");
                }
                else
                {
                    isValidDate = true;
                }
            }

            DisplayOrderResponse response = manager.LoadOrders(date1);

            foreach (FlooringOrder order in response.Orders)
            {
                io.DisplayOrderDetails(order);
            }

            int  ordernumber   = -1;
            bool isValidNumber = false;

            while (isValidNumber == false)
            {
                string orderstring = io.GetStringFromUser("Please enter an order number.");
                if (!int.TryParse(orderstring, out ordernumber))
                {
                    Console.WriteLine("This did not work, please enter a number");
                }
                else
                {
                    foreach (var item in response.Orders)
                    {
                        if (item.OrderNumber == ordernumber)
                        {
                            newOrder = item;
                        }
                    }
                    isValidNumber = true;
                }
            }

            //if one order = delete entire file
            //if theres more than one order in date, remove the order number from list -> remove with LINQ
            //save list back to file for that date

            io.DisplayOrderDetails(newOrder);
            bool isSave = false;

            while (isSave == false)
            {
                string place = PromptUser("Are you entireley sure that you want to remove this order? Choose yes or no.");
                if (place.ToLower() == "yes")
                {
                    DeleteOrderResponse deleteResponse = manager.DeleteOrder(date1, newOrder.OrderNumber);
                    isSave = true;
                    // save final to file with approps date
                }
                else if (place.ToLower() == "no")
                {
                    isSave = true;
                }
                else
                {
                    Console.WriteLine("Please enter yes or no");
                }
            }

            Console.WriteLine("Press any key to continue...");
            Console.ReadLine();
        }