public IActionResult Create(CreateItemViewModel model)
        {
            if (ModelState.IsValid)
            {
                string UniqueFileName = ProcessUploadedFile(model);

                PubItems newItem = _context.AddPubItem(new PubItems()
                {
                    ItemName        = model.ItemName,
                    ItemType        = model.ItemType,
                    ItemPrice       = model.ItemPrice,
                    ItemImagePath   = UniqueFileName,
                    ItemDescription = model.ItemDescription,
                    ItemOnSale      = model.ItemOnSale,
                    ItemStock       = model.ItemStock,
                });
                if (!(newItem == null))
                {
                    return(RedirectToAction("Details", new { id = newItem.ItemId }));
                }
                else
                {
                    ModelState.AddModelError("", "An error occured, could not create a new item.");
                    //ERROR: item was not added
                }
            }
            return(View(model));
        }
 public IActionResult RemoveBasketItem(int id) //add order using an ajax request and return a partial view with toast message
 {
     if (id > 0)
     {
         PubItems Item = _context.GetPubItem(id);
         if (Item != null)
         {
             string Session = HttpContext.Session.GetString("PubSession"); //store session id
             if (Session != null)                                          //if a session has been created
             {
                 PubSessions pubSession = _context.GetPubSession(Session); //get session info
                 if (pubSession != null)                                   //session exists
                 {
                     if (pubSession.OrderBasketId != 0)
                     {
                         //add item
                         PubOrderBasketItems basketItem = _context.GetPubOrderBasketItem(pubSession.OrderBasketId, id);
                         if (basketItem != null)
                         {
                             if (_context.RemoveOrderBasketItem(pubSession.OrderBasketId, basketItem.ItemId))
                             {
                                 TempData["ToastMessage"] = JsonSerializer.Serialize(ToastAlert.Toast("Item Removed", String.Format("{0}x {1} has been removed from your basket", basketItem.ItemQuantity, Item.ItemName), Item.ItemImagePath));
                                 return(RedirectToAction("OrderBasket"));
                             }
                         }
                     }
                 }
             }
         }
     }
     TempData["ToastMessage"] = JsonSerializer.Serialize(ToastAlert.DefaultError());
     return(RedirectToAction("OrderBasket"));
 }
 public IActionResult Details(int?id)
 {
     if (id != null && id > 0)
     {
         PubItems Item = _context.GetPubItem((int)id);
         if (Item != null)
         {
             UserAccessRank userAccessRank = UserAccessRank.Customer;
             var            Session        = HttpContext.Session.GetString("PubSession"); //user must be logged in to view orders
             if (Session != null)
             {
                 PubSessions pubSession = _context.GetPubSession(Session); //get session info
                 if (pubSession != null)                                   //session exists
                 {
                     if (pubSession.UserId > 0)                            //if a user is logged in...
                     {
                         PubUsers pubUser = _context.GetPubUser(pubSession.UserId);
                         if (pubUser != null) //if user exists
                         {
                             userAccessRank = pubUser.UserAccessRank;
                         }
                     }
                 }
             }
             if (Item.ItemOnSale || userAccessRank == UserAccessRank.Admin)
             {
                 ViewBag.UserAccessRank = userAccessRank; //get access rank as admins will be able be able to press a button to go to edit item page.
                 ViewBag.Item           = Item;
                 return(View(new AddOrderItemViewModel()));
             }
         }
     }
     return(RedirectToAction("Index"));
 }
        public IActionResult Edit(EditItemViewModel model)
        {
            var Session = HttpContext.Session.GetString("PubSession"); //user must be logged in to view orders

            if (Session != null)
            {
                PubSessions pubSession = _context.GetPubSession(Session); //get session info
                if (pubSession != null)                                   //session exists
                {
                    if (pubSession.UserId > 0)                            //if a user is logged in...
                    {
                        PubUsers pubUser = _context.GetPubUser(pubSession.UserId);
                        if (pubUser != null && pubUser.UserAccessRank == UserAccessRank.Admin) //if user exists
                        {
                            if (ModelState.IsValid)                                            //user is an admin, allow access to editing.
                            {
                                PubItems EditedItem = new PubItems()
                                {
                                    ItemId          = model.ItemID,
                                    ItemDescription = model.ItemDescription,
                                    ItemName        = model.ItemName,
                                    ItemOnSale      = model.ItemOnSale,
                                    ItemPrice       = model.ItemPrice,
                                    ItemStock       = model.ItemStock,
                                    ItemType        = model.ItemType,
                                    ItemImagePath   = model.ItemExistingImagePath
                                };

                                if (model.ItemImage != null)
                                {
                                    if (model.ItemExistingImagePath != null)
                                    {
                                        string existingFilePath = Path.Combine(webHostEnvironment.WebRootPath, "images", model.ItemExistingImagePath);
                                        System.IO.File.Delete(existingFilePath);
                                    }
                                    EditedItem.ItemImagePath = ProcessUploadedFile(model);
                                }

                                //int result = _context.AddPubItem();

                                if (_context.EditPubItem(EditedItem) == true)
                                {
                                    return(RedirectToAction("Details", new { id = EditedItem.ItemId }));
                                }
                                else
                                {
                                    ModelState.AddModelError("", "An error occured, could not create a new item.");
                                    //ERROR: item was not added
                                }
                            }
                            return(View(model));
                        }
                    }
                }
            }
            return(RedirectToAction("Index", "Home"));
        }
 public IActionResult EditOrderItem(int itemID, int itemQuantity)
 {
     if (itemID > 0 && itemQuantity > 0)
     {
         string Session = HttpContext.Session.GetString("PubSession"); //store session id
         if (Session != null)                                          //if a session has been created
         {
             PubSessions pubSession = _context.GetPubSession(Session); //get session info
             if (pubSession != null && pubSession.OrderBasketId != 0)  //session and basket exists
             {
                 int                 OrderBasketID = pubSession.OrderBasketId;
                 PubItems            PubItem       = _context.GetPubItem(itemID);
                 PubOrderBasketItems item          = _context.GetPubOrderBasketItem(pubSession.OrderBasketId, itemID);
                 if (item != null && PubItem != null)
                 {
                     //edit item
                     if (itemQuantity <= PubItem.ItemStock)
                     {
                         if (itemQuantity <= GlobalConstants.MaxItemsPerOrder)
                         {
                             //edit
                             if (_context.EditPubOrderBasketItem(OrderBasketID, itemID, itemQuantity))
                             {
                                 return(PartialView("ToastMessage", ToastAlert.Toast("Item Updated", string.Format("Changed {0} quantity to: {1}.", PubItem.ItemName, itemQuantity), PubItem.ItemImagePath)));
                             }
                             else
                             {
                                 return(PartialView("ToastMessage", ToastAlert.DefaultError()));
                                 //error item could not be updated
                             }
                         }
                         else
                         {
                             //max items error
                             return(PartialView("ToastMessage", ToastAlert.ItemQuantityMaxError(PubItem.ItemImagePath)));
                         }
                     }
                     else
                     {
                         return(PartialView("ToastMessage", ToastAlert.ItemQuantityStockError(PubItem.ItemImagePath)));
                         //not enoguh in stock error
                     }
                 }
             }
         }
     }
     return(null);
 }
Exemplo n.º 6
0
        public IActionResult Index()
        {
            List <PubItems> RandomItems;
            PubItems        randomSnack = _context.GetRandomPubItem(Models.Enum.ItemTypes.Snack, true); //get random item of type drink that is on sale.
            PubItems        randomDrink = _context.GetRandomPubItem(Models.Enum.ItemTypes.Drink, true);

            if (randomSnack != null || randomDrink != null)
            {
                RandomItems = new List <PubItems> {
                    randomDrink, randomSnack
                };
            }
            else
            {
                RandomItems = null;
            }

            ViewBag.ViewItems = RandomItems;
            return(View(new AddOrderItemViewModel()));
        }
        public IActionResult Edit(int?id)
        {
            if (id != null)
            {
                var Session = HttpContext.Session.GetString("PubSession"); //user must be logged in to view orders
                if (Session != null)
                {
                    PubSessions pubSession = _context.GetPubSession(Session); //get session info
                    if (pubSession != null)                                   //session exists
                    {
                        if (pubSession.UserId > 0)                            //if a user is logged in...
                        {
                            PubUsers pubUser = _context.GetPubUser(pubSession.UserId);
                            if (pubUser != null && pubUser.UserAccessRank == UserAccessRank.Admin) //if user exists and is an admin then allow access to edit page.
                            {
                                int      itemID = (int)id;
                                PubItems item   = _context.GetPubItem(itemID);

                                if (item != null)
                                {
                                    EditItemViewModel model = new EditItemViewModel
                                    {
                                        ItemID = itemID,
                                        ItemExistingImagePath = item.ItemImagePath,
                                        ItemDescription       = item.ItemDescription,
                                        ItemName   = item.ItemName,
                                        ItemOnSale = item.ItemOnSale,
                                        ItemPrice  = item.ItemPrice,
                                        ItemStock  = item.ItemStock,
                                        ItemType   = item.ItemType,
                                    };
                                    return(View(model));
                                }
                            }
                        }
                    }
                }
            }
            return(RedirectToAction("Index", "Home"));
        }
        public IActionResult AddOrderItemPartial(int id, int?itemQuantity)  //add order using an ajax request and return a partial view with toast message
        {
            if (id > 0)
            {
                int quantity = itemQuantity ?? 1;
                if (quantity != 0)
                {
                    PubItems Item = _context.GetPubItem(id);
                    if (Item != null)
                    {
                        if (Item.ItemOnSale)
                        {
                            if (quantity <= Item.ItemStock)
                            {
                                if (quantity > 0 && quantity <= GlobalConstants.MaxItemsPerOrder)       //compare against max items per order only rather than item stock as well as the item stock may change when the user actually makes their order.
                                {
                                    string Session       = HttpContext.Session.GetString("PubSession"); //store session id
                                    int    OrderBasketID = 0;
                                    if (Session != null)                                                //if a session has been created
                                    {
                                        PubSessions pubSession = _context.GetPubSession(Session);       //get session info
                                        if (pubSession != null)                                         //session exists
                                        {
                                            if (pubSession.OrderBasketId != 0)
                                            {
                                                //add item
                                                OrderBasketID = pubSession.OrderBasketId;
                                                PubOrderBasketItems item = _context.GetPubOrderBasketItem(pubSession.OrderBasketId, id);
                                                if (item != null)
                                                {
                                                    //edit item
                                                    int newQuantity = quantity + item.ItemQuantity;
                                                    if (newQuantity <= Item.ItemStock)
                                                    {
                                                        if (newQuantity <= GlobalConstants.MaxItemsPerOrder)
                                                        {
                                                            //edit
                                                            if (_context.EditPubOrderBasketItem(OrderBasketID, id, newQuantity))
                                                            {
                                                                return(PartialView("ToastMessage", ToastAlert.Toast("Item Added", String.Format("{0}x {1} was added to your basket. Total Quantity: {2}", quantity, Item.ItemName, newQuantity), Item.ItemImagePath)));
                                                            }
                                                            else
                                                            {
                                                                return(PartialView("ToastMessage", ToastAlert.DefaultError()));
                                                                //error item could not be updated
                                                            }
                                                        }
                                                        else
                                                        {
                                                            //max items error
                                                            return(PartialView("ToastMessage", ToastAlert.ItemQuantityMaxError(Item.ItemImagePath)));
                                                        }
                                                    }
                                                    else
                                                    {
                                                        return(PartialView("ToastMessage", ToastAlert.ItemQuantityStockError(Item.ItemImagePath)));
                                                        //not enoguh in stock error
                                                    }
                                                }
                                            }
                                            else
                                            {
                                                //create new orderbasket and add item
                                                OrderBasketID = _context.CreatePubSessionOrderBasket(Session, null);
                                                if (pubSession.UserId != 0)
                                                {
                                                    if (_context.GetPubUser(pubSession.UserId) != null)
                                                    {
                                                        _context.UpdatePubUserOrderBasket(pubSession.UserId, OrderBasketID);
                                                    }
                                                }
                                            }
                                        }
                                        else
                                        {
                                            //create a new session and orderbasket and add item
                                            Session = _context.AddPubSession(null, null);
                                            if (Session != null)
                                            {
                                                HttpContext.Session.SetString("PubSession", Session);
                                                OrderBasketID = _context.CreatePubSessionOrderBasket(Session, null);
                                            }
                                        }
                                    }
                                    else //create a new session and orderbasket and add item
                                    {
                                        Session = _context.AddPubSession(null, null);
                                        if (Session != null)
                                        {
                                            HttpContext.Session.SetString("PubSession", Session);
                                            OrderBasketID = _context.CreatePubSessionOrderBasket(Session, null);
                                        }
                                    }

                                    if (OrderBasketID != 0)
                                    {
                                        if (_context.AddPubOrderBasketItem(OrderBasketID, id, quantity))
                                        {
                                            return(PartialView("ToastMessage", ToastAlert.Toast("Item Added", String.Format("{0}x {1} was added to your basket", quantity, Item.ItemName), Item.ItemImagePath)));
                                        }
                                    }
                                }
                                else
                                {
                                    return(PartialView("ToastMessage", ToastAlert.ItemQuantityMaxError(Item.ItemImagePath)));
                                }
                            }
                            else
                            {
                                return(PartialView("ToastMessage", ToastAlert.ItemQuantityStockError(Item.ItemImagePath)));
                            }
                        }
                        else
                        {
                            //error item not on sale
                        }
                    }
                }
            }
            return(PartialView("ToastMessage", ToastAlert.DefaultError()));
        }
        public IActionResult AddOrderItem(AddOrderItemViewModel model) //add order using view model request and redirect to index page of items with a toast message
        {
            if (ModelState.IsValid)
            {
                PubItems Item = _context.GetPubItem(model.ItemId);
                if (Item != null)
                { //Item exists in database.
                    if (Item.ItemOnSale)
                    {
                        if (model.ItemQuantity <= Item.ItemStock)
                        {
                            if (model.ItemQuantity > 0 && model.ItemQuantity <= GlobalConstants.MaxItemsPerOrder) //compare against max items per order only rather than item stock as well as the item stock may change when the user actually makes their order.
                            {
                                string Session       = HttpContext.Session.GetString("PubSession");               //store session id
                                int    OrderBasketID = 0;
                                if (Session != null)                                                              //if a session has been created
                                {
                                    PubSessions pubSession = _context.GetPubSession(Session);                     //get session info
                                    if (pubSession != null)                                                       //session exists
                                    {
                                        if (pubSession.OrderBasketId != 0)
                                        {
                                            //add item
                                            OrderBasketID = pubSession.OrderBasketId;
                                            PubOrderBasketItems item = _context.GetPubOrderBasketItem(pubSession.OrderBasketId, model.ItemId);
                                            if (item != null)
                                            {
                                                //edit item
                                                int newQuantity = model.ItemQuantity + item.ItemQuantity;
                                                if (newQuantity <= Item.ItemStock)
                                                {
                                                    if (newQuantity <= GlobalConstants.MaxItemsPerOrder)
                                                    {
                                                        //edit
                                                        if (_context.EditPubOrderBasketItem(OrderBasketID, model.ItemId, newQuantity))
                                                        {
                                                            TempData["ToastMessage"] = JsonSerializer.Serialize(ToastAlert.Toast("Item Added", String.Format("{0}x {1} was added to your basket. Total Quantity: {2}", model.ItemQuantity, Item.ItemName, newQuantity), Item.ItemImagePath));
                                                            return(RedirectToAction("Index"));
                                                        }
                                                        else
                                                        {
                                                            TempData["ToastMessage"] = JsonSerializer.Serialize(ToastAlert.DefaultError());
                                                            return(RedirectToAction("Index"));
                                                            //error item could not be updated
                                                        }
                                                    }
                                                    else
                                                    {
                                                        //max items error
                                                        TempData["ToastMessage"] = JsonSerializer.Serialize(ToastAlert.ItemQuantityMaxError(Item.ItemImagePath));
                                                        return(RedirectToAction("Index"));
                                                    }
                                                }
                                                else
                                                {
                                                    TempData["ToastMessage"] = JsonSerializer.Serialize(ToastAlert.ItemQuantityStockError(Item.ItemImagePath));
                                                    return(RedirectToAction("Index"));
                                                    //not enoguh in stock error
                                                }
                                            }
                                        }
                                        else
                                        {
                                            //create new orderbasket and add item
                                            OrderBasketID = _context.CreatePubSessionOrderBasket(Session, null);
                                            if (pubSession.UserId != 0)
                                            {
                                                if (_context.GetPubUser(pubSession.UserId) != null)
                                                {
                                                    _context.UpdatePubUserOrderBasket(pubSession.UserId, OrderBasketID);
                                                }
                                            }
                                        }
                                    }
                                    else
                                    {
                                        //create a new session and orderbasket and add item
                                        Session = _context.AddPubSession(null, null);
                                        if (Session != null)
                                        {
                                            HttpContext.Session.SetString("PubSession", Session);
                                            OrderBasketID = _context.CreatePubSessionOrderBasket(Session, null);
                                        }
                                    }
                                }
                                else //create a new session and orderbasket and add item
                                {
                                    Session = _context.AddPubSession(null, null);
                                    if (Session != null)
                                    {
                                        HttpContext.Session.SetString("PubSession", Session);
                                        OrderBasketID = _context.CreatePubSessionOrderBasket(Session, null);
                                    }
                                }

                                if (OrderBasketID != 0)
                                {
                                    if (_context.AddPubOrderBasketItem(OrderBasketID, model.ItemId, model.ItemQuantity))
                                    {
                                        TempData["ToastMessage"] = JsonSerializer.Serialize(ToastAlert.Toast("Item Added", String.Format("{0}x {1} was added to your basket", model.ItemQuantity, Item.ItemName), Item.ItemImagePath));
                                        return(RedirectToAction("Index"));
                                    }
                                }
                            }
                            else
                            {
                                TempData["ToastMessage"] = JsonSerializer.Serialize(ToastAlert.ItemQuantityMaxError(Item.ItemImagePath));
                                return(RedirectToAction("Index"));
                            }
                        }
                        else
                        {
                            TempData["ToastMessage"] = JsonSerializer.Serialize(ToastAlert.ItemQuantityStockError(Item.ItemImagePath));
                            return(RedirectToAction("Index"));
                        }
                    }
                    else
                    {
                        //error item not on sale
                    }
                }
            }
            TempData["ToastMessage"] = JsonSerializer.Serialize(ToastAlert.DefaultError());
            return(RedirectToAction("Index"));
        }