//Get: PizzaSite/ReviewOrder
 public ActionResult ReviewOrder()
 {
     pizzaSiteModel    = TempData["model"] as PizzaSiteModel;
     ViewBag.model     = pizzaSiteModel;
     TempData["model"] = pizzaSiteModel;
     return(View(pizzaSiteModel));
 }
        //Get: PizzaSite/Order
        public ActionResult Order()
        {
            pizzaSiteModel = TempData["model"] as PizzaSiteModel;

            var toppingresult = getToppingsAsync().Result;
            var sauceresult   = getSaucesAsync();
            var crustresult   = getCrustAsync();
            var sizeresult    = getSizesAsync();
            var cheeseresult  = getCheesesAsync().Result;

            if (sauceresult != null && crustresult != null && sizeresult != null && toppingresult != null && cheeseresult != null)
            {
                pizzaSiteModel.SauceOptions   = makeSauceList(sauceresult);
                pizzaSiteModel.CrustOptions   = makeCrustList(crustresult);
                pizzaSiteModel.SizeOptions    = makeSizeList(sizeresult);
                pizzaSiteModel.ToppingOptions = toppingresult;
                pizzaSiteModel.CheeseOptions  = cheeseresult;
                TempData["model"]             = pizzaSiteModel;
                return(View(pizzaSiteModel));
            }
            else
            {
                return(View());
            }
        }
        public RedirectToRouteResult Index(PizzaSiteModel model)

        {
            pizzaSiteModel.storeString = model.storeString;
            StoreDTO store;

            store = getStoresAsync().Result.Where(s => s.LocationId == model.storeString).FirstOrDefault();
            pizzaSiteModel.currentStore = store;
            TempData["model"]           = pizzaSiteModel;
            return(RedirectToAction("ChooseUser"));
        }
        public RedirectToRouteResult ChooseUser(PizzaSiteModel model)

        {
            pizzaSiteModel = TempData["model"] as PizzaSiteModel;
            CustomerDTO customer;

            pizzaSiteModel.userString = model.userString;

            customer = getCustomersAsync().Result.Where(s => s.Name.ToString() == model.userString).FirstOrDefault();
            pizzaSiteModel.currentCustomer = customer;
            TempData["model"] = pizzaSiteModel;
            return(RedirectToAction("Order"));
        }
 public RedirectToRouteResult CompleteOrder(PizzaSiteModel model)
 {
     pizzaSiteModel = TempData["model"] as PizzaSiteModel;
     pizzaSiteModel.currentOrder.Name = string.Format("{0}_{1}_{2}", pizzaSiteModel.currentStore.LocationId, pizzaSiteModel.currentCustomer.Name.ToString(), pizzaSiteModel.currentOrder.Pizzas.Count.ToString());
     foreach (var item in pizzaSiteModel.currentOrder.Pizzas)
     {
         item.Order          = new OrderDTO();
         item.Order.Name     = pizzaSiteModel.currentOrder.Name;
         item.Order.Store    = pizzaSiteModel.currentStore;
         item.Order.Customer = pizzaSiteModel.currentCustomer;
     }
     TempData["model"] = pizzaSiteModel;
     return(RedirectToAction("PurchaseComplete"));
 }
        //Get: PizzaSite/ChooseUser
        public ActionResult ChooseUser()
        {
            pizzaSiteModel = TempData["model"] as PizzaSiteModel;

            var userResult = getCustomersAsync();

            if (userResult != null)
            {
                pizzaSiteModel.UserOptions = makeUserList(userResult);
                TempData["model"]          = pizzaSiteModel;
                return(View(pizzaSiteModel));
            }
            else
            {
                return(View());
            }
        }
        public RedirectToRouteResult Order(PizzaSiteModel model)
        {
            pizzaSiteModel = TempData["model"] as PizzaSiteModel;

            var pizza = new PizzaDTO();

            pizza.Sauce    = getSaucesAsync().Result.Where(m => m.Name == model.sauceString).FirstOrDefault();
            pizza.Size     = getSizesAsync().Result.Where(m => m.Name == model.sizeString).FirstOrDefault();
            pizza.Crust    = getCrustAsync().Result.Where(m => m.Name == model.crustString).FirstOrDefault();
            pizza.cheeses  = new List <CheeseDTO>();
            pizza.toppings = new List <ToppingDTO>();
            for (int x = 0; x < model.CheeseOptions.Count(); x++)
            {
                if (model.CheeseOptions[x].chosen)
                {
                    var option = new CheeseDTO();
                    option.chosen = true;
                    option.Name   = pizzaSiteModel.CheeseOptions[x].Name;
                    option.Value  = pizzaSiteModel.CheeseOptions[x].Value;
                    pizza.cheeses.Add(option);
                }
            }
            for (int x = 0; x < model.ToppingOptions.Count(); x++)
            {
                if (model.ToppingOptions[x].chosen)
                {
                    var option = new ToppingDTO();
                    option.chosen = true;
                    option.Name   = pizzaSiteModel.ToppingOptions[x].Name;
                    option.Value  = pizzaSiteModel.ToppingOptions[x].Value;
                    pizza.toppings.Add(option);
                }
            }
            pizza.Name = string.Format("{0}_{1}", pizzaSiteModel.currentCustomer.Name.ToString(), new Guid());
            model.currentOrder.currentPizza = pizza;



            pizzaSiteModel.currentOrder.Pizzas.Add(model.currentOrder.currentPizza);
            pizzaSiteModel.currentOrder.Value    = pizzaSiteModel.currentOrder.calculateValue();
            pizzaSiteModel.currentOrder.Customer = pizzaSiteModel.currentCustomer;
            pizzaSiteModel.currentOrder.Store    = pizzaSiteModel.currentStore;
            TempData["model"] = pizzaSiteModel;

            return(RedirectToAction("revieworder"));
        }
        //Get: PizzaSite/PurchaseComplete
        public ActionResult PurchaseComplete()
        {
            pizzaSiteModel = TempData["model"] as PizzaSiteModel;
            var result = insertOrderAsync(pizzaSiteModel.currentOrder).Result;

            foreach (var item in pizzaSiteModel.currentOrder.Pizzas)
            {
                insertPizzaAsync(item);
                foreach (var item2 in item.cheeses)
                {
                    var pizzacheese = new PizzaCheeseDTO();
                    pizzacheese.Cheese = item2;
                    pizzacheese.Pizza  = item;

                    insertPizzaCheeseAsync(pizzacheese);
                }
            }
            pizzaSiteModel.orderhistory = getOrdersAsync().Result;
            TempData["model"]           = pizzaSiteModel;
            //return View(pizzaSiteModel);

            return(View(pizzaSiteModel));
        }
 public RedirectToRouteResult AddPizza(PizzaSiteModel model)
 {
     pizzaSiteModel    = TempData["model"] as PizzaSiteModel;
     TempData["model"] = pizzaSiteModel;
     return(RedirectToAction("Order"));
 }