Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Runtime.InteropServices.WindowsRuntime;
- using Windows.Foundation;
- using Windows.Foundation.Collections;
- using Windows.UI.Xaml;
- using Windows.UI.Xaml.Controls;
- using Windows.UI.Xaml.Controls.Primitives;
- using Windows.UI.Xaml.Data;
- using Windows.UI.Xaml.Input;
- using Windows.UI.Xaml.Media;
- using Windows.UI.Xaml.Navigation;
- // The Blank Page item template is documented at https://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409
- namespace TomCafe
- {
- /// <summary>
- /// An empty page that can be used on its own or navigated to within a Frame.
- /// </summary>
- public sealed partial class MainPage : Page
- {
- //Stores List of Beverages
- List<MenuItem> beverageList;
- //Stores List of Sides
- List<MenuItem> sideList;
- //Stores List of Value Meals
- List<MenuItem> valueMealList;
- //Stores List of Bundles
- List<MenuItem> bundleMealList;
- public DateTime morningStart = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 7, 0, 0);
- public DateTime morningEnd = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 14, 59, 59);
- public DateTime afternoonStart = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 10, 0, 0);
- public DateTime afternoonEnd = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 19, 59, 59);
- public DateTime dinnerStart = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 16, 0, 0);
- public DateTime dinnerEnd = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 22, 59, 59);
- public DateTime wholeStart = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 00, 0, 0);
- public DateTime wholeEnd = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 23, 59, 59);
- private bool isBundle = false;
- Order order = new Order();
- private List<MenuItem> currentMenu;
- string defaultDisplayText = "Welcome to Tom's Cafe!\nChoose your item from the menu.";
- private void initLists()
- {
- Side sHashbrown = new Side("Hash brown", 2.1);
- Side sFries = new Side("Truffle fries", 3.7);
- Side sCalamari = new Side("Calamari\t", 3.4);
- Side sSalad = new Side("Caesar salad", 4.3);
- Beverage bCola = new Beverage("Cola\t", 2.85, 0);
- Beverage bGreentea = new Beverage("Green Tea", 3.70, 0);
- Beverage bCoffee = new Beverage("Coffee\t", 2.70, 0);
- Beverage bTea = new Beverage("Tea\t", 2.70, 0);
- Beverage bRootbeer = new Beverage("Tom's Root Beer", 9.70, 0);
- Beverage bMocktail = new Beverage("Mocktail\t", 15.90, 0);
- //ValueMeals
- ValueMeal vHotcake = new ValueMeal("Hotcake with sausage", 7.90, morningStart, morningEnd);
- ValueMeal vHamburger = new ValueMeal("Hamburger\t", 10.20, afternoonStart, afternoonEnd);
- ValueMeal vSteak = new ValueMeal("Ribeye steak", 18.50, dinnerStart, dinnerEnd);
- ValueMeal vNasiLemak = new ValueMeal("Nasi lemak", 6.90, wholeStart, wholeEnd);
- //Menuitems Sides
- MenuItem hashbrown = new MenuItem(sHashbrown.Name, sHashbrown.Price, sHashbrown);
- MenuItem fries = new MenuItem(sFries.Name, sFries.Price, sFries);
- MenuItem calamari = new MenuItem(sCalamari.Name, sCalamari.Price, sCalamari);
- MenuItem salad = new MenuItem(sSalad.Name, sSalad.Price, sSalad);
- sideList = new List<MenuItem> { hashbrown, fries, calamari, salad };
- //Beverages
- MenuItem cola = new MenuItem(bCola.Name, bCola.Price, bCola);
- MenuItem greentea = new MenuItem(bGreentea.Name, bGreentea.Price, bGreentea);
- MenuItem coffee = new MenuItem(bCoffee.Name, bCoffee.Price, bCoffee);
- MenuItem tea = new MenuItem(bTea.Name, bTea.Price, bTea);
- MenuItem rootbeer = new MenuItem(bRootbeer.Name, bRootbeer.Price, bRootbeer);
- MenuItem mocktail = new MenuItem(bMocktail.Name, bMocktail.Price, bMocktail);
- beverageList = new List<MenuItem> { cola, greentea, coffee, tea, rootbeer, mocktail };
- MenuItem hotcake = new MenuItem(vHotcake.Name, vHotcake.Price, vHotcake);
- MenuItem hamburger = new MenuItem(vHamburger.Name, vHamburger.Price, vHamburger);
- MenuItem steak = new MenuItem(vSteak.Name, vSteak.Price, vSteak);
- MenuItem nasiLemak = new MenuItem(vNasiLemak.Name, vNasiLemak.Price, vNasiLemak);
- valueMealList = new List<MenuItem> { hotcake, hamburger, steak, nasiLemak };
- // Bundle meals
- MenuItem breakfast = new MenuItem("Breakfast set", 7.9, vHotcake, sHashbrown);
- MenuItem lunch = new MenuItem("Hamburger Combo", 10.2, vHamburger, sFries, bCola);
- MenuItem dinner = new MenuItem("Dinner Set", 18.5, vSteak, sFries, sSalad, bCoffee);
- bundleMealList = new List<MenuItem> { breakfast, lunch, dinner };
- }
- private void refreshMenu(List<MenuItem> list)
- {
- itemsListView.ItemsSource = null;
- itemsListView.ItemsSource = list;
- }
- private void onBundleSelected()
- {
- currentMenu = checkMealTime(bundleMealList);
- refreshMenu(currentMenu);
- isBundle = true;
- }
- private void onValueMealSelected()
- {
- currentMenu = checkMealTime(valueMealList);
- refreshMenu(currentMenu);
- isBundle = false;
- }
- private void onSideSelected()
- {
- currentMenu = sideList;
- refreshMenu(sideList);
- isBundle = false;
- }
- private void onBeveragesSelected()
- {
- currentMenu = beverageList;
- refreshMenu(beverageList);
- isBundle = false;
- }
- private List<MenuItem> checkMealTime(List<MenuItem> list)
- {
- List<MenuItem> result = new List<MenuItem>();
- foreach (MenuItem item in list)
- {
- MenuItem res = CheckItemTiming(item);
- if (res != null) result.Add(res);
- }
- return result;
- }
- private MenuItem CheckItemTiming(MenuItem item)
- {
- MenuItem result = null;
- foreach (Product p in item.ProductList)
- {
- if (p is ValueMeal)
- {
- DateTime today = DateTime.Now;
- ValueMeal vm = (ValueMeal)p;
- if (today.Hour > vm.StartTime.Hour && today.Hour < vm.EndTime.Hour)
- {
- result = item;
- break;
- }
- }
- }
- return result;
- }
- public void refreshCartView()
- {
- cartsListView.ItemsSource = null;
- cartsListView.ItemsSource = order.ItemList;
- }
- public MainPage()
- {
- this.InitializeComponent();
- initLists();
- onBundleSelected();
- displayText.Text = defaultDisplayText;
- }
- private void mainsButton_Click(object sender, RoutedEventArgs e)
- {
- //Valuemeal Button
- onValueMealSelected();
- }
- private void sidesButton_Click(object sender, RoutedEventArgs e)
- {
- //Side Button
- onSideSelected();
- }
- private void beveragesButton_Click(object sender, RoutedEventArgs e)
- {
- //Beverage Button
- onBeveragesSelected();
- }
- private void bundlesButton_Click(object sender, RoutedEventArgs e)
- {
- //BundleMeal Button
- onBundleSelected();
- }
- private Beverage checkifDrinkInMenuItem(MenuItem item)
- {
- foreach (Product p in item.ProductList)
- {
- if (p is Beverage) return (Beverage)p;
- }
- return null;
- }
- private double checkNegative(double a, double b)
- {
- double res = a - b;
- if (res < 0) return 0;
- return res;
- }
- bool tradeInDrinkMenuShown = false;
- MenuItem selectedBundleItem = null;
- bool first = true;
- private void addButton_Click(object sender, RoutedEventArgs e)
- {
- //Add MenuItem as OrderItem
- if (itemsListView.SelectedIndex != -1)
- {
- MenuItem selectedMenuItem = (MenuItem)itemsListView.SelectedItem;
- print($"is menuitem bundle: {isBundle}\nis there a drink: {checkifDrinkInMenuItem(selectedMenuItem)}");
- //Find index in Order object's orderitem list
- if (isBundle && checkifDrinkInMenuItem(selectedMenuItem) != null && first)
- {
- first = false;
- selectedBundleItem = selectedMenuItem;
- Beverage currentDrink = checkifDrinkInMenuItem(selectedMenuItem);
- List<MenuItem> drinkList = new List<MenuItem>();
- List<MenuItem> tradeInDrinkList = beverageList.Select(bMI => new MenuItem(bMI.Name, bMI.Price, new Beverage(bMI.Name, bMI.Price, checkNegative(bMI.Price, currentDrink.Price)))).ToList();
- refreshMenu(tradeInDrinkList);
- tradeInDrinkMenuShown = true;
- return;
- }
- if (tradeInDrinkMenuShown && selectedBundleItem != null)
- {
- print("Drink is selected");
- tradeInDrinkMenuShown = false;
- selectedBundleItem.ProductList.RemoveAll(n => n is Beverage);
- MenuItem selectedDrink = (MenuItem)itemsListView.SelectedValue;
- selectedBundleItem.ProductList.Add(checkifDrinkInMenuItem(selectedDrink));
- selectedMenuItem = selectedBundleItem;
- }
- int orderIndex = (order.ItemList.Select(oi => oi.Item.ToString()).ToList().FindIndex(n => n == selectedMenuItem.ToString()));
- if (orderIndex == -1)
- {
- OrderItem newOrderItem = new OrderItem(selectedMenuItem);
- order.Add(newOrderItem);
- }
- else
- {
- order.ItemList[orderIndex].AddQty();
- }
- refreshCartView();
- statusText.Text = $"{selectedMenuItem.Name} added!\nTotal: {order.GetTotalAmt().ToString("c2")}";
- }
- displayText.Text = defaultDisplayText;
- }
- //When user confirms order
- private void orderButton_Click(object sender, RoutedEventArgs e)
- {
- //Only if it is not empty
- if (order.ItemList.Count != 0)
- {
- string orderItemsString = "";
- order.ItemList.ForEach((OrderItem oi) => { orderItemsString += $"{oi.Quantity}\t{oi.Item.Name}\t {oi.GetItemTotalAmt().ToString("c2")}\n"; });
- displayText.Text = $"Receipt #{order.OrderNo}\n{orderItemsString}\n\nTotal\t{order.GetTotalAmt().ToString("c2")}";
- order.OrderNo += 1;
- order.ItemList.Clear();
- refreshCartView();
- }
- else
- {
- statusText.Text = "Your shopping Cart is empty!";
- }
- }
- //Clear Order when cancel Button is clicked
- private void cancelButton_Click(object sender, RoutedEventArgs e)
- {
- statusText.Text = "Your order has been cancelled :(";
- if (order.ItemList.Count == 0) statusText.Text = "Your shopping Cart is empty!";
- order.ItemList.Clear();
- //Change back to bundle meals
- refreshCartView();
- displayText.Text = defaultDisplayText;
- }
- private void removeButton_Click(object sender, RoutedEventArgs e)
- {
- //Reduce Quantity of OrderItem
- int selectedIndex = cartsListView.SelectedIndex;
- if (selectedIndex != -1)
- {
- statusText.Text = $"{order.ItemList[selectedIndex].Item.Name} has been removed.\n";
- if (order.ItemList[selectedIndex].Quantity != 1)
- {
- order.ItemList[selectedIndex].RemoveQty();
- }
- else
- {
- order.ItemList.RemoveAt(selectedIndex);
- }
- statusText.Text += $"Total: {order.GetTotalAmt().ToString("c2")}";
- refreshCartView();
- }
- else if (order.ItemList.Count == 0)
- {
- statusText.Text = "Your shopping Cart is empty!";
- }
- displayText.Text = defaultDisplayText;
- }
- private void print(object value)
- {
- System.Diagnostics.Debug.WriteLine(value);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement