Exemple #1
0
        public async Task <IActionResult> Remove(int id)
        {
            WineCart cart = null;

            if (User.Identity.IsAuthenticated)
            {
                var currentUser = await _userManager.GetUserAsync(User);

                cart = await _context.WineCarts.Include(x => x.WineCartProducts).FirstOrDefaultAsync(x => x.ApplicationUserID == currentUser.Id);
            }
            else
            {
                if (Request.Cookies.ContainsKey("cart_id"))
                {
                    int existingCartID = int.Parse(Request.Cookies["cart_id"]);
                    cart = await _context.WineCarts.Include(x => x.WineCartProducts).FirstOrDefaultAsync(x => x.ID == existingCartID);

                    cart.DateLastModified = DateTime.Now;
                }
            }

            WineCartProduct product = cart.WineCartProducts.FirstOrDefault(x => x.ID == id);

            cart.WineCartProducts.Remove(product);
            await _context.SaveChangesAsync();

            if (!User.Identity.IsAuthenticated)
            {
                Response.Cookies.Append("cart_id", cart.ID.ToString(), new Microsoft.AspNetCore.Http.CookieOptions
                {
                    Expires = DateTime.Now.AddYears(1)
                });
            }
            return(RedirectToAction("Index", "Cart"));
        }
Exemple #2
0
        public ActionResult CartSummary()
        {
            var cart = WineCart.GetCart(this.HttpContext);

            ViewData["CartCount"] = cart.GetCount();
            return(PartialView("CartSummary"));
        }
Exemple #3
0
        public ActionResult AddToCart(int id)
        {
            var addedItem = wineDB.Products
                            .Single(item => item.ID == id);

            var cart = WineCart.GetCart(this.HttpContext);

            int count = cart.AddToCart(addedItem);

            if (count == 0)
            {
                return(View());
            }

            var results = new WineCartRemoveViewModel
            {
                Message = Server.HtmlEncode(addedItem.Name) +
                          " has been added to your shopping cart.",
                CartTotal       = cart.GetTotal(),
                CartCount       = cart.GetCount(),
                ProductQuantity = count,
                DeleteID        = id
            };

            return(Json(results));
        }
Exemple #4
0
        public async Task <ActionResult> Confirm(FormCollection values)
        {
            var order = new Order();

            TryUpdateModel(order);
            try
            {
                order.Username  = User.Identity.GetUserName();
                order.OrderDate = DateTime.Now;
                var currentUserId = User.Identity.GetUserId();

                wineDB.Orders.Add(order);
                await wineDB.SaveChangesAsync();

                var cart = WineCart.GetCart(this.HttpContext);
                order = cart.CreateOrder(order);

                return(RedirectToAction("Complete",
                                        new { id = order.OrderId }));
            }
            catch
            {
                return(View(order));
            }
        }
Exemple #5
0
        public IActionResult Index(CheckoutModel model)
        {
            if (ModelState.IsValid)
            {
                WineOrder order = new WineOrder
                {
                    City             = model.City,
                    State            = model.State,
                    Email            = model.Email,
                    StreetAddress    = model.StreetAddress,
                    AptSuite         = model.AptSuite,
                    ZipCode          = model.ZipCode,
                    DateCreated      = DateTime.Now,
                    DateLastModified = DateTime.Now,
                    PaidDate         = (DateTime?)null
                };

                WineCart cart = null;
                if (User.Identity.IsAuthenticated)
                {
                    var currentUser = _userManager.GetUserAsync(User).Result;
                    cart = _context.WineCarts.Include(x => x.WineCartProducts).ThenInclude(x => x.WineProducts).Single(x => x.ApplicationUserID == currentUser.Id);
                }
                else if (Request.Cookies.ContainsKey("cart_id"))
                {
                    int existingCartID = int.Parse(Request.Cookies["cart_id"]);
                    cart = _context.WineCarts.Include(x => x.WineCartProducts).ThenInclude(x => x.WineProducts).FirstOrDefault(x => x.ID == existingCartID);
                }
                foreach (var cartItem in cart.WineCartProducts)
                {
                    order.WineOrderProducts.Add(new WineOrderProduct
                    {
                        DateCreated        = DateTime.Now,
                        DateLastModified   = DateTime.Now,
                        Quantity           = cartItem.Quantity ?? 1,
                        ProductID          = cartItem.WineProductsID,
                        ProductDescription = cartItem.WineProducts.Description,
                        ProductName        = cartItem.WineProducts.Name,
                        ProductPrice       = cartItem.WineProducts.Price ?? 0
                    });
                }

                _context.WineCartProducts.RemoveRange(cart.WineCartProducts);

                if (Request.Cookies.ContainsKey("cart_id"))
                {
                    Response.Cookies.Delete("cart_id");
                }

                _context.WineOrders.Add(order);
                _context.SaveChanges();
                return(RedirectToAction("Payment", new { id = order.ID }));
            }
            return(View());
        }
Exemple #6
0
        public ActionResult Index()
        {
            var cart      = WineCart.GetCart(this.HttpContext);
            var viewModel = new WineCartViewModel
            {
                CartProducts = cart.GetCartItems(),
                CartTotal    = cart.GetTotal()
            };

            return(View(viewModel));
        }
Exemple #7
0
        private async Task <bool> ChangeCartOwner(ApplicationUser user)
        {
            WineCart model = null;

            if (Request.Cookies.ContainsKey("cart_id"))
            {
                int existingCartID = int.Parse(Request.Cookies["cart_id"]);
                model = await _context.WineCarts.FirstOrDefaultAsync(x => x.ID == existingCartID);

                model.ApplicationUserID = user.Id;
                await _context.SaveChangesAsync();

                Response.Cookies.Delete("cart_id");
                return(true);
            }
            return(false);
        }
Exemple #8
0
        public IActionResult Index()
        {
            WineCart model = null;

            if (User.Identity.IsAuthenticated)
            {
                var currentUser = _userManager.GetUserAsync(User).Result;
                model = _context.WineCarts.Include(x => x.WineCartProducts).ThenInclude(x => x.WineProducts).Single(x => x.ApplicationUserID == currentUser.Id);
            }
            else if (Request.Cookies.ContainsKey("cart_id"))
            {
                int existingCartID = int.Parse(Request.Cookies["cart_id"]);
                model = _context.WineCarts.Include(x => x.WineCartProducts)
                        .ThenInclude(x => x.WineProducts).FirstOrDefault(x => x.ID == existingCartID);
            }
            else
            {
                model = new WineCart();
            }
            return(View(model));
        }
Exemple #9
0
        public ActionResult RemoveFromCart(int id)
        {
            var cart = WineCart.GetCart(this.HttpContext);

            string itemName = wineDB.Products
                              .Single(item => item.ID == id).Name;

            int itemCount = cart.RemoveFromCart(id);

            var results = new WineCartRemoveViewModel
            {
                Message = "One (1) " + Server.HtmlEncode(itemName) +
                          " has been removed from your shopping cart.",
                CartTotal       = cart.GetTotal(),
                CartCount       = cart.GetCount(),
                ProductQuantity = itemCount,
                DeleteID        = id
            };

            return(Json(results));
        }