public void Inventory()
        {
            using IPizzaboxRepository pizzaboxRepository = DbOptions.CreatePizzaboxRepository();

            string locationid = "";
            int    tried      = trials = 3;
            int    id         = 0;

            do
            {
                Console.WriteLine("Please select your location:");
                int count = Locations();
                Console.Write("Store ID (enter digit): ");
                locationid = Console.ReadLine();
                Console.Clear();
                if (int.TryParse(locationid, out id))
                {
                    if (id < 1 || id > count)
                    {
                        if (trials > 1)
                        {
                            Console.WriteLine("Please enter a digit according to store IDs displayed below:");
                            trials--;
                        }
                        else
                        {
                            Console.WriteLine("You have failed to identify your shop " + tried + " times.");
                            Exit();
                            return;
                        }
                    }
                    else
                    {
                        break;
                    }
                }
            } while (trials > 0);

            var query = pizzaboxRepository.GetInventoryByStore(id);
            var store = pizzaboxRepository.GetStoreById(id);

            if (query == null)
            {
                if (store == null)
                {
                    Console.WriteLine("There is no such store.");
                    return;
                }

                Console.WriteLine("Inventory at location #" + store.StoreId + " is currently unavailable. Please contact your administrator.");
                return;
            }

            Console.WriteLine("Store #" + id.ToString().PadLeft(12 - id.ToString().Length, '0'));
            Console.WriteLine("Has enough ingredients for " + query.Preset + " Presets");
            Console.WriteLine("Has enough ingredients for " + query.Custom + " Customs");

            Console.WriteLine();
        }
        public override void History()
        {
            using IPizzaboxRepository pizzaboxRepository = DbOptions.CreatePizzaboxRepository();

            Console.WriteLine("1. Recent Orders by Shop");
            Console.WriteLine("2. All Orders");
            Console.Write("Please make a selection (enter digit): ");
            string answer = Console.ReadLine();

            Console.Clear();
            bool all = false;

            switch (answer.ToLower())
            {
            case "1":
            case "recent orders by shop":
            case "by shop":
            case "shop":
            case "store":
            case "store orders":
                all = false;
                break;

            case "2":
            case "all orders":
            case "all":
            case "everything":
            case "all stores":
            case "all shops":
            case "all locations":
                all = true;
                break;

            default:
                Console.WriteLine("Invalid selection.");
                return;
            }

            IEnumerable <Orders> results;

            if (all)
            {
                Console.WriteLine("ORDER HISTORY AT ALL LOCATIONS");
                results = pizzaboxRepository.GetOrdersBy("", "all");
            }
            else
            {
                #region ADMIN INPUT STORE LOCATION
                string locationid = "";
                int    count      = 0;
                int    id         = 0;
                trials = 3;
                do
                {
                    count = Locations();
                    Console.Write("Pick a location (Enter ID Here): ");
                    locationid = Console.ReadLine();
                    Console.Clear();
                    if (int.TryParse(locationid, out id))
                    {
                        if (id < 1 || id > count)
                        {
                            if (trials > 1)
                            {
                                Console.WriteLine("Please enter a digit according to store IDs displayed below:");
                            }
                        }
                        else
                        {
                            break;
                        }
                    }
                    else
                    {
                        if (trials > 1)
                        {
                            Console.WriteLine("Please enter a digit according to store IDs displayed below:");
                        }
                    }

                    trials--;
                } while (trials > 0);
                if (trials < 1)
                {
                    Console.WriteLine("Sorry, we tend to think inside the box.\nYou can always contact us directly at 7499274992 (PIZZAPIZZA).\n");
                    Exit();
                    return;
                }
                #endregion

                var store = pizzaboxRepository.GetStoreById(id);
                Console.WriteLine("ORDERS AT " + store.City.ToUpper() + " SHOP");

                results = pizzaboxRepository.GetOrdersBy(locationid, "store");
            }

            if (results.Count() < 1)
            {
                Console.WriteLine("No orders have been made.\n");
                return;
            }

            Orders[]    O   = new Orders[results.Count()];
            Ordertype[] OT  = new Ordertype[results.Count()];
            int[]       ids = new int[results.Count()];

            #region Initialization of O, OT, and ids
            int i;
            for (i = 0; i < results.Count(); i++)
            {
                O[i] = new Orders()
                {
                    OrderId  = 0,
                    StoreId  = 0,
                    Username = ""
                };
                OT[i] = new Ordertype()
                {
                    OrderId = 0,
                    Preset  = "",
                    Custom  = "",
                    Dt      = "",
                    Tm      = ""
                };
                ids[i] = new int();
            }
            #endregion

            #region Map Orders results
            i = 0;
            foreach (var val in results)
            {
                O[i]   = val;
                ids[i] = val.OrderId;

                #region NOTE:
                ///NOTE: DataReader can not use result from Entity1 query while querying data in Entity2
                #endregion
                i++;
            }

            for (i = 0; i < results.Count(); i++)
            {
                OT[i] = pizzaboxRepository.GetOrdertypeById(ids[i]);

                #region OT[i] can be assumed != null as long as developers don't mess with it.  Make sure they can't

                /*
                 * if (OT[i] == null)
                 * {
                 *  //handle it
                 * }
                 */
                #endregion
            }
            #endregion

            #region Display Full List of Recent Orders
            i = 0;
            while (i < results.Count())
            {
                int    j = 0, n = 0;
                string nums, sequence;

                ///DISPLAY ORDER# AND DATE/TIME
                Console.WriteLine("Order #" + O[i].OrderId.ToString().PadLeft(12 - O[i].OrderId.ToString().Length, '0'));
                string D = OT[i].Dt.Replace('.', '/');
                string T = OT[i].Tm.Replace('.', ':');
                Console.WriteLine(D + " " + T);

                ///PRESET TRANSLATION TO HUMAN-READABLE FORMAT
                do
                {
                    ///RESET TRANSLATED SEQUENCE AFTER EACH PRINT
                    nums     = "";
                    sequence = "";

                    if ((OT[i].Preset.Length > 0 && OT[i].Preset[0] == '-') || OT[i].Preset.Length == 0)
                    {
                        break;
                    }

                    ///GET FULL DIGIT FROM ORIGINAL SEQUENCE UNTIL ISLETTER - Worst O(3)
                    while (j < OT[i].Preset.Length && Char.IsDigit(OT[i].Preset[j]))
                    {
                        nums += OT[i].Preset[j];
                        j++;
                    }

                    //NUMS IS NOT A NUMBER? SKIP
                    if (!int.TryParse(nums, out n))
                    {
                        break;
                    }

                    ///GET FULL CHAR SEQUENCE FROM ORIGINAL UNTIL NEXT DIGIT/END - Worst O(2)
                    while (j < OT[i].Preset.Length && Char.IsLetter(OT[i].Preset[j]))
                    {
                        switch (OT[i].Preset[j])
                        {
                        case 'S':
                            sequence += "Small Preset, ";
                            break;

                        case 'M':
                            sequence += "Medium Preset, ";
                            break;

                        case 'L':
                            sequence += "Large Preset, ";
                            break;

                        case 'k':
                            sequence += "thick crust pizza";
                            if (n > 1)
                            {
                                sequence += "s";
                            }
                            break;

                        case 'n':
                            sequence += "thin crust pizza";
                            if (n > 1)
                            {
                                sequence += "s";
                            }
                            break;
                        }

                        j++;
                    }

                    ///PRINT AMOUNT AND ORDER IN READABLE FORMAT
                    Console.WriteLine(Convert.ToInt32(nums) + " " + sequence);
                } while (j < OT[i].Preset.Length);

                ///CUSTOM TRANSLATION TO HUMAN-READABLE FORMAT
                j = 0; n = 0;
                do
                {
                    ///RESET TRANSLATED SEQUENCE AFTER EACH PRINT
                    nums     = "";
                    sequence = "";

                    if ((OT[i].Custom.Length > 0 && OT[i].Custom[0] == '-') || OT[i].Custom.Length == 0)
                    {
                        break;
                    }

                    ///GET FULL DIGIT FROM ORIGINAL SEQUENCE UNTIL ISLETTER - Worst O(3)
                    while (j < OT[i].Custom.Length && Char.IsDigit(OT[i].Custom[j]))
                    {
                        nums += OT[i].Custom[j];
                        j++;
                    }

                    if (!int.TryParse(nums, out n))
                    {
                        break;
                    }

                    ///GET FULL CHAR SEQUENCE FROM ORIGINAL UNTIL NEXT DIGIT/END - Worst O(2)
                    while (j < OT[i].Custom.Length && Char.IsLetter(OT[i].Custom[j]))
                    {
                        switch (OT[i].Custom[j])
                        {
                        case 'S':
                            sequence += "Small Custom, ";
                            break;

                        case 'M':
                            sequence += "Medium Custom, ";
                            break;

                        case 'L':
                            sequence += "Large Custom, ";
                            break;

                        case 'k':
                            sequence += "thick crust pizza";
                            if (n > 1)
                            {
                                sequence += "s";
                            }
                            break;

                        case 'n':
                            sequence += "thin crust pizza";
                            if (n > 1)
                            {
                                sequence += "s";
                            }
                            break;
                        }

                        j++;
                    }

                    ///PRINT AMOUNT AND ORDER IN READABLE FORMAT
                    Console.WriteLine(Convert.ToInt32(nums) + " " + sequence);
                } while (j < OT[i].Custom.Length);

                Console.WriteLine();
                i++;
            }
            #endregion
        }
예제 #3
0
        public void Order()
        {
            using IPizzaboxRepository pizzaboxRepository = DbOptions.CreatePizzaboxRepository();
            Orders               MyOrder  = new Orders();
            Ordertype            ODetails = new Ordertype();
            Order_tracker        Tracker;
            List <Order_tracker> Q = new List <Order_tracker>();

            MyOrder.Username = CurrentUser.Username;

            decimal total_cost = 0.00m;
            int     pizzas     = 0;
            int     preset_amt = 0;
            int     custom_amt = 0;

            string p_sequence = "";           //save sequence (holds full order for preset)
            string c_sequence = "";           //save sequence (holds full order for custom)

            //USER INPUT DESIRED LOCATION
            int count = 0;

            trials = 3;
            do
            {
                count = Locations();
                Console.Write("Pick a location (Enter ID Here): ");
                var locationid = Console.ReadLine();
                Console.Clear();
                if (int.TryParse(locationid, out int id))
                {
                    if (id < 1 || id > count)
                    {
                        if (trials > 1)
                        {
                            Console.WriteLine("Please enter a digit according to store IDs displayed below:");
                        }
                    }
                    else
                    {
                        MyOrder.StoreId = id;
                        break;
                    }
                }
                else
                {
                    if (trials > 1)
                    {
                        Console.WriteLine("Please enter a digit according to store IDs displayed below:");
                    }
                }

                trials--;
            } while (trials > 0);
            if (trials < 1)
            {
                Console.WriteLine("Sorry, we tend to think inside the box.\nYou can always contact us directly at 7499274992 (PIZZAPIZZA).\n");
                Exit();
                return;
            }

            var result = pizzaboxRepository.GetStoreById(MyOrder.StoreId);
            //var results = from s in DB.Store where s.StoreId == MyOrder.StoreId select s;
            string answer;
            bool   another, shown, ispreset, iscustom, error;

            do
            {
                answer   = "";
                shown    = false;
                error    = false;
                ispreset = false;
                iscustom = false;
                another  = false;

                Tracker.preset       = false;
                Tracker.preset_order = "";
                Tracker.size         = "";
                Tracker.sauce        = "";
                Tracker.crust        = "";
                Tracker.cheese       = "";
                Tracker.amt          = 0;
                Tracker.toppings     = new string[toppings_arraylen];
                Tracker.cost         = 0.00m;
                for (int i = 0; i < Tracker.toppings.Length; i++)
                {
                    Tracker.toppings[i] = "";
                }

                //PRESET OR CUSTOM
                Console.WriteLine("You are ordering from the " + result.City + " store.\n");

                trials = 3;
                do
                {
                    Console.WriteLine("Would you like a Preset or Custom pizza?");
                    if (!shown)
                    {
                        Console.WriteLine();
                        Console.WriteLine("For menu, just enter \"menu\" at any time.");
                        Console.WriteLine("For additional information, just enter \"info\" or \"help\".");
                        shown = true;
                    }

                    Console.Write("Order (style): ");
                    answer = Console.ReadLine();
                    Console.Clear();
                    Console.WriteLine("You are ordering from the " + result.City + " store.\n");
                    switch (answer.ToLower())
                    {
                    case "menu":
                    case "\"menu\"":
                    case "m":
                        Console.WriteLine("MENU");
                        Menu();
                        break;

                    case "info":
                    case "help":
                    case "\"info\"":
                    case "\"help\"":
                    case "i":
                    case "h":
                        Console.WriteLine("Sure thing...");
                        Console.WriteLine("Our pizzas come in two styles:");
                        Console.WriteLine("1. Preset - Pre-built specialty pizzas designed by our chef");
                        Console.WriteLine("2. Custom - Be a boss and choose your own toppings\n");
                        break;

                    case "preset":
                    case "1. preset":
                    case "1":
                    case "p":
                        ispreset       = true;
                        Tracker.preset = true;
                        break;

                    case "custom":
                    case "2. custom":
                    case "2":
                    case "c":
                        iscustom = true;
                        break;

                    default:
                        CLError(answer);
                        break;
                    }

                    // now that Tracker.preset, these are unnecessary variables (deal with it later)!!!
                    if (ispreset || iscustom)
                    {
                        break;
                    }
                } while (trials > 0);
                if (trials < 1)
                {
                    return;
                }

                //AMOUNT PRESET/CUSTOM
                trials = 3;
                do
                {
                    Console.WriteLine("How many would you like?");
                    Console.Write("Order (enter digit): ");
                    answer = Console.ReadLine();
                    Console.Clear();
                    Console.WriteLine("You are ordering from the " + result.City + " store.\n");
                    if (int.TryParse(answer, out int number))
                    {
                        if (number < 1)
                        {
                            //computecost(); make this a method and return out!!!
                            //or make a jump (take the leap)
                            ComputeOrder(Tracker, Q, total_cost);
                            //add order to db!!!
                            return;
                        }
                        pizzas += number;
                        if (pizzas > 100)
                        {
                            pizzas -= number;

                            if (trials > 1)
                            {
                                Console.Write("Orders limited to 100 pizzas at a time: ");
                                if (100 - pizzas > 0)
                                {
                                    Console.WriteLine(100 - pizzas + " remaining");
                                }

                                error = true;
                            }
                            else
                            {
                                Console.WriteLine("Sorry, we tend to think inside the box.\nYou can always contact us directly at 7499274992 (PIZZAPIZZA).\n");
                                Exit();
                                return;
                            }
                        }
                        else if (ispreset)
                        {
                            preset_amt += number;
                            p_sequence += answer;
                        }
                        else
                        {
                            custom_amt += number;
                            c_sequence += answer;
                        }

                        if (!error)
                        {
                            Tracker.amt = number;
                            break;
                        }
                    }
                    else
                    {
                        if (trials > 1)
                        {
                            Console.WriteLine("Please enter a digit amount.");
                        }
                        else
                        {
                            CLError(answer);
                            return;
                        }
                    }

                    trials--;
                } while (trials > 0);

                //PRESET ORDER SPECIFIC
                if (ispreset)
                {
                    //PRESET NAME
                    trials = 3;
                    do
                    {
                        Console.WriteLine("Please choose from the menu below:");
                        Console.WriteLine("Preset");
                        Console.WriteLine("1. Vegan | Small $4 | Medium $8 | Large $12");
                        Console.WriteLine("2. Pepperoni | Small $5 | Medium $10 | Large $15");
                        Console.WriteLine("3. BBQ Chicken | Small $6 | Medium $12 | Large $18");
                        Console.WriteLine("4. Meatball | Small $7 | Medium $14 | Large $21");
                        Console.WriteLine("5. Supreme | Small $8 | Medium $16 | Large $24");
                        Console.WriteLine("6. Greek | Small $9 | Medium $18 | Large $27\n");

                        Console.Write("Order (enter digit): ");
                        answer = Console.ReadLine();
                        Console.Clear();
                        Console.WriteLine("You are ordering from the " + result.City + " store.\n");
                        switch (answer.ToLower())
                        {
                        case "1":
                        case "vegan":
                            Tracker.preset_order = "VEGAN";
                            break;

                        case "2":
                        case "pepperoni":
                            Tracker.preset_order = "PEPPERONI";
                            break;

                        case "3":
                        case "bbq":
                        case "chicken":
                        case "bbq chicken":
                            Tracker.preset_order = "BBQ CHICKEN";
                            break;

                        case "4":
                        case "meatball":
                        case "meat":
                            Tracker.preset_order = "MEATBALL";
                            break;

                        case "5":
                        case "supreme":
                            Tracker.preset_order = "SUPREME";
                            break;

                        case "6":
                        case "greek":
                            Tracker.preset_order = "GREEK";
                            break;

                        default:
                            CLError(answer);
                            break;
                        }

                        if (Tracker.preset_order.Length > 0)
                        {
                            break;
                        }
                    } while (trials > 0);
                    if (trials < 1)
                    {
                        return;
                    }
                }

                //SIZE
                trials = 3;
                do
                {
                    Console.WriteLine("Would you like that in a Small, Medium, or Large?");
                    Console.Write("Order (size): ");
                    answer = Console.ReadLine();
                    Console.Clear();
                    Console.WriteLine("You are ordering from the " + result.City + " store.\n");
                    switch (answer.ToLower())
                    {
                    case "s":
                    case "sm":
                    case "small":
                        if (ispreset)
                        {
                            p_sequence += "S";
                        }
                        else
                        {
                            c_sequence   += "S";
                            Tracker.cost += Tracker.amt * 3.00m;
                        }

                        Tracker.size = "SMALL";
                        break;

                    case "m":
                    case "md":
                    case "medium":
                        if (ispreset)
                        {
                            p_sequence += "M";
                        }
                        else
                        {
                            c_sequence   += "M";
                            Tracker.cost += Tracker.amt * 6.00m;
                        }

                        Tracker.size = "MEDIUM";
                        break;

                    case "l":
                    case "lg":
                    case "large":
                        if (ispreset)
                        {
                            p_sequence += "L";
                        }
                        else
                        {
                            c_sequence   += "L";
                            Tracker.cost += Tracker.amt * 9.00m;
                        }

                        Tracker.size = "LARGE";
                        break;

                    default:
                        CLError(answer);
                        break;
                    }

                    if (Tracker.size.Length > 0)
                    {
                        break;
                    }
                } while (trials > 0);
                if (trials < 1)
                {
                    return;
                }

                //IF PRESET, GO AHEAD AND CALCULATE COST
                if (Tracker.preset)
                {
                    switch (Tracker.preset_order)
                    {
                    case "VEGAN":
                        //put the entire switch statement in a method and take in as parameter decimal starting val (V:4.00, P:5.00, etc) and Tracker.size
                        //then just call the method in each case with different arguments
                        switch (Tracker.size)
                        {
                        case "SMALL":
                            Tracker.cost = Tracker.amt * 4.00m;
                            break;

                        case "MEDIUM":
                            Tracker.cost = Tracker.amt * 8.00m;
                            break;

                        case "LARGE":
                            Tracker.cost = Tracker.amt * 12.00m;
                            break;
                        }
                        break;

                    case "PEPPERONI":
                        switch (Tracker.size)
                        {
                        case "SMALL":
                            Tracker.cost = Tracker.amt * 5.00m;
                            break;

                        case "MEDIUM":
                            Tracker.cost = Tracker.amt * 10.00m;
                            break;

                        case "LARGE":
                            Tracker.cost = Tracker.amt * 15.00m;
                            break;
                        }
                        break;

                    case "BBQ CHICKEN":
                        switch (Tracker.size)
                        {
                        case "SMALL":
                            Tracker.cost = Tracker.amt * 6.00m;
                            break;

                        case "MEDIUM":
                            Tracker.cost = Tracker.amt * 12.00m;
                            break;

                        case "LARGE":
                            Tracker.cost = Tracker.amt * 18.00m;
                            break;
                        }
                        break;

                    case "MEATBALL":
                        switch (Tracker.size)
                        {
                        case "SMALL":
                            Tracker.cost = Tracker.amt * 7.00m;
                            break;

                        case "MEDIUM":
                            Tracker.cost = Tracker.amt * 14.00m;
                            break;

                        case "LARGE":
                            Tracker.cost = Tracker.amt * 21.00m;
                            break;
                        }
                        break;

                    case "SUPREME":
                        switch (Tracker.size)
                        {
                        case "SMALL":
                            Tracker.cost = Tracker.amt * 8.00m;
                            break;

                        case "MEDIUM":
                            Tracker.cost = Tracker.amt * 16.00m;
                            break;

                        case "LARGE":
                            Tracker.cost = Tracker.amt * 24.00m;
                            break;
                        }
                        break;

                    case "GREEK":
                        switch (Tracker.size)
                        {
                        case "SMALL":
                            Tracker.cost = Tracker.amt * 9.00m;
                            break;

                        case "MEDIUM":
                            Tracker.cost = Tracker.amt * 18.00m;
                            break;

                        case "LARGE":
                            Tracker.cost = Tracker.amt * 27.00m;
                            break;
                        }
                        break;
                    }
                }

                //CRUST
                trials = 3;
                do
                {
                    Console.WriteLine("Crust Thick or Thin?");
                    Console.Write("Order (crust): ");
                    answer = Console.ReadLine();
                    Console.Clear();
                    Console.WriteLine("You are ordering from the " + result.City + " store.\n");
                    switch (answer.ToLower())
                    {
                    case "1":
                    case "thick":
                    case "thick crust":
                        if (ispreset)
                        {
                            p_sequence += "k";
                        }
                        else
                        {
                            c_sequence += "k";
                        }

                        Tracker.crust = "THICK";
                        break;

                    case "2":
                    case "thin":
                    case "thin crust":
                        if (ispreset)
                        {
                            p_sequence += "n";
                        }
                        else
                        {
                            c_sequence += "n";
                        }

                        Tracker.crust = "THIN";
                        break;

                    default:
                        CLError(answer);
                        break;
                    }

                    if (Tracker.crust.Length > 0)
                    {
                        break;
                    }
                } while (trials > 0);
                if (trials < 1)
                {
                    return;
                }

                //CUSTOM ORDER SPECIFIC
                if (iscustom)
                {
                    //SAUCE
                    trials = 3;
                    do
                    {
                        Console.WriteLine("Choose a sauce:");
                        Console.WriteLine("1. Traditional $0.50");
                        Console.WriteLine("2. BBQ $1");
                        Console.WriteLine("3. Alfredo $1\n");

                        Console.Write("Order (enter digit): ");
                        answer = Console.ReadLine();
                        Console.Clear();
                        Console.WriteLine("You are ordering from the " + result.City + " store.\n");
                        switch (answer.ToLower())
                        {
                        case "1":
                        case "traditional":
                        case "trad":
                            Tracker.sauce = "TRADITIONAL";
                            Tracker.cost += Tracker.amt * 0.50m;
                            break;

                        case "2":
                        case "bbq":
                        case "barbeque":
                            Tracker.sauce = "BBQ";
                            Tracker.cost += Tracker.amt * 1.00m;
                            break;

                        case "3":
                        case "alfredo":
                        case "fredo":
                            Tracker.sauce = "ALFREDO";
                            Tracker.cost += Tracker.amt * 1.00m;
                            break;

                        default:
                            CLError(answer);
                            break;
                        }

                        if (Tracker.sauce.Length > 0)
                        {
                            break;
                        }
                    } while (trials > 0);
                    if (trials < 1)
                    {
                        return;
                    }

                    //CHEESE
                    trials = 3;
                    do
                    {
                        Console.WriteLine("Pick a cheese:");
                        Console.WriteLine("0. None");
                        Console.WriteLine("1. Regular $0.50");
                        Console.WriteLine("2. Goat (Greek) $1");
                        Console.WriteLine("3. Queso $2\n");

                        Console.Write("Order (enter digit): ");
                        answer = Console.ReadLine();
                        Console.Clear();
                        Console.WriteLine("You are ordering from the " + result.City + " store.\n");
                        switch (answer.ToLower())
                        {
                        case "":
                        case "0":
                        case "none":
                        case "no":
                        case "no cheese":
                        case "no thanks":
                        case "no thankyou":
                        case "no thank you":
                            Tracker.cheese = "NONE";
                            break;

                        case "1":
                        case "regular":
                        case "reg":
                            Tracker.cheese = "REGULAR";
                            Tracker.cost  += Tracker.amt * 0.50m;
                            break;

                        case "2":
                        case "goat":
                        case "greek":
                        case "goat (greek)":
                        case "goat greek":
                        case "greek goat":
                            Tracker.cheese = "GOAT";
                            Tracker.cost  += Tracker.amt * 1.00m;
                            break;

                        case "3":
                        case "queso":
                        case "queso fresco":
                        case "fresco":
                            Tracker.cheese = "QUESO";
                            Tracker.cost  += Tracker.amt * 2.00m;
                            break;

                        default:
                            CLError(answer);
                            break;
                        }

                        if (Tracker.cheese.Length > 0)
                        {
                            break;
                        }
                    } while (trials > 0);
                    if (trials < 1)
                    {
                        return;
                    }

                    //TOPPINGS
                    trials = 3;
                    do
                    {
                        Console.WriteLine("Pick your toppings.");
                        Console.WriteLine("For multiple toppings, simply enter a stream of digits up to four.");
                        Console.WriteLine("For any less, you will need to press enter twice:");
                        Console.WriteLine("0. None");
                        Console.WriteLine("1. Veggies/Fruit $0.50");
                        Console.WriteLine("2. Pepperoni $1");
                        Console.WriteLine("3. Chicken $1");
                        Console.WriteLine("4. Meatballs $3\n");

                        Console.Write("Order (enter digit/s): ");
                        answer = Console.ReadLine();
                        Console.Clear();
                        Console.WriteLine("You are ordering from the " + result.City + " store.\n");

                        if (answer.Length == 0 || answer[0] == '0')
                        {
                            break;
                        }

                        int i = 0;
                        while ((i < answer.Length) && (i < toppings_arraylen))
                        {
                            if (Char.IsDigit(answer[i]))
                            {
                                switch (answer[i])
                                {
                                case '1':
                                    Tracker.toppings[i] = "VEGGIES/FRUIT";
                                    Tracker.cost       += Tracker.amt * 0.50m;
                                    break;

                                case '2':
                                    Tracker.toppings[i] = "PEPPERONI";
                                    Tracker.cost       += Tracker.amt * 1.00m;
                                    break;

                                case '3':
                                    Tracker.toppings[i] = "CHICKEN";
                                    Tracker.cost       += Tracker.amt * 1.00m;
                                    break;

                                case '4':
                                    Tracker.toppings[i] = "MEATBALLS";
                                    Tracker.cost       += Tracker.amt * 3.00m;
                                    break;

                                default:
                                    CLError(answer);
                                    break;
                                }

                                if (Tracker.toppings[i].Length == 0)
                                {
                                    break;
                                }
                            }
                            else
                            {
                                CLError(answer);
                                break;
                            }

                            i++;
                        }

                        if (Tracker.toppings[toppings_arraylen - 1].Length > 0)
                        {
                            break;
                        }
                    } while (trials > 0);
                    if (trials < 1)
                    {
                        return;
                    }
                }

                if (pizzas < 100)
                {
                    //CALCULATE CURRENT COST & SAVE STATE OF VARS for PRINTOUT
                    Console.WriteLine("Should I mark this order as complete?");
                    Console.Write("Enter Y/N: ");
                    answer = Console.ReadLine();
                    Console.Clear();
                    switch (answer.ToLower())
                    {
                    case "n":
                    case "no":
                    case "not yet":
                    case "nope":
                        Console.WriteLine("Wow, this must be some good pizza!");
                        another = true;
                        break;

                    case "y":
                    case "yes":
                    case "sure":
                    case "ok":
                    case "k":
                    case "okay":
                    case "alright":
                        break;

                    default:
                        Console.Write("I'll take that as a yes. One moment please ");
                        Loading('.', 3, 2);
                        break;
                    }
                }

                total_cost += Tracker.cost;
                Q.Add(Tracker);

                if (total_cost > 250.00m)
                {
                    Console.Clear();
                    trials = 3;
                    do
                    {
                        Console.WriteLine("Orders can not exceed $250.");
                        Console.WriteLine("Choose which items you would like to remove:\n");

                        for (int i = 0; i < Q.Count; i++)
                        {
                            if (Q[i].preset)
                            {
                                Console.WriteLine(i + 1 + ": (" + Q[i].amt + ") " + Q[i].size + ", " + Q[i].crust + " " + Q[i].preset_order);
                            }
                            else
                            {
                                Console.WriteLine(i + 1 + ": (" + Q[i].amt + ") " + Q[i].size + ", " + Q[i].crust + " " + Q[i].cheese + " on " + Q[i].sauce);
                                Console.Write("Toppings: ");
                                for (int j = 0; j < Q[i].toppings.Length; j++)
                                {
                                    Console.Write(Q[i].toppings[j]);

                                    if (j < Q[i].toppings.Length - 1)
                                    {
                                        Console.Write(", ");
                                    }
                                }
                                Console.WriteLine();
                            }
                            Console.WriteLine("$" + Tracker.cost + "\n");
                        }

                        Console.WriteLine("Total: $" + total_cost);
                        Console.Write("Remove (Enter Digit): ");
                        answer = Console.ReadLine();
                        Console.Clear();
                        if (int.TryParse(answer, out int num) && num > 0 && num <= Q.Count)
                        {
                            total_cost -= Q[num - 1].cost;
                            Q.RemoveAt(num - 1);
                        }
                        else
                        {
                            if (trials > 1)
                            {
                                Console.WriteLine("Please enter a valid digit according to the list below:");
                            }
                            else
                            {
                                Console.WriteLine("Sorry, we tend to think inside the box.\nYou can always contact us directly at 7499274992 (PIZZAPIZZA).\n");
                                Exit();
                                return;
                            }

                            trials--;
                        }
                    } while (total_cost > 250.00m);

                    if (total_cost == 0.00m)
                    {
                        another = true;
                    }
                }
            } while (another);

            if (promo)
            {
                sales_price = total_cost * 0.50m;     //try not to hardcode this for next update (KeyValues<discounts,bools>)
            }
            //PRINT EACH FROM THE QUEUE
            ComputeOrder(Tracker, Q, total_cost);

            if (p_sequence.Length < 1)
            {
                p_sequence = "-";
            }
            else if (c_sequence.Length < 1)
            {
                c_sequence = "-";
            }

            //STORE IN DB
            pizzaboxRepository.AddOrder(MyOrder, ODetails, p_sequence, c_sequence);
            pizzaboxRepository.UpdateInventory(MyOrder.StoreId, preset_amt, custom_amt, "subtract");
        }