예제 #1
0
        public async Task <IActionResult> Add(CartAddViewModel model)
        {
            if (ModelState.IsValid)
            {
                await _cartService.Add(model.ActivityProductId, model.Quantity, Guid.Parse(User.GetUserId()));

                return(RedirectToAction("Index"));
            }
            return(View(model));
        }
예제 #2
0
        public ActionResult Add(int id)
        {
            var user = GetSession <UserSessionInfo>(USER_SESSION);

            if (user == null)
            {
                return(JavaScript("$('#login-modal').modal();"));
            }
            var cart = new CartAddViewModel()
            {
                AdvertisementId = id,
                BuyerId         = user.Id
            };

            _cartService.Add(cart);
            return(Json(true, JsonRequestBehavior.AllowGet));
        }
예제 #3
0
        public bool Add(CartAddViewModel cartAddVm)
        {
            var cart = new Cart()
            {
                BuyerId         = cartAddVm.BuyerId,
                AdvertisementId = cartAddVm.AdvertisementId,
                CartDetail      = new CartDetail()
                {
                    CreatedOn   = DateTime.Now,
                    ModifiedOn  = DateTime.Now,
                    Quantity    = cartAddVm.Quantity,
                    TotalAmount = cartAddVm.TotalAmount
                }
            };

            _cartRepository.Add(cart);
            return(true);
        }
예제 #4
0
        public ActionResult AddToCart(int id)
        {
            // Retrieve the product from the database
            var addedProduct = _unitOfWork.Products.Get(id);

            // Add it to the shopping cart
            var cartId = _unitOfWork.Carts.GetCartId(HttpContext);

            _unitOfWork.Carts.AddToCart(addedProduct, cartId);

            _unitOfWork.Complete();

            var results = new CartAddViewModel()
            {
                Message = Server.HtmlEncode(addedProduct.Name) +
                          " has been added to your shopping cart.",
                CartCount = _unitOfWork.Carts.GetCount(cartId)
            };

            return(Json(results));
        }
        public ActionResult AddToCart(int id, CartAddViewModel model)
        {
            CartDO cartDO = new CartDO();

            if (User.Identity.IsAuthenticated)
            {
                cartDO.User_ID = User.Identity.GetUserId();
                //checking if user already has cart created
                cartDO = cartManagement.GetCartByUserID(cartDO.User_ID);
                if (cartDO.Cart_ID == 0)
                {
                    try
                    {
                        cartDO.User_ID = User.Identity.GetUserId();
                        cartDO.Cart_ID = model.Cart_ID;
                        CartManagement cartManagement = new CartManagement();
                        cartManagement.AddCartIDandUserIDInCart(cartDO);

                        return(RedirectToAction("Index"));
                    }


                    catch (Exception e)
                    {
                        Console.WriteLine(e);
                    }
                }
                else
                {
                    return(RedirectToAction("Index"));
                }
            }
            else
            {
                return(RedirectToAction("Login", "Account"));
            }

            return(null);
        }
        private int AddToCart(CartAddViewModel model, bool fromUpdate = false)
        {
            var      cart        = GetCart(fromUpdate);
            CartItem newCartItem = null;

            var stock = db.Stocks.FirstOrDefault(m => m.Id == model.ItemId);

            if (stock != null)
            {
                var isPresent = false;
                foreach (CartItem itm in cart.CartItems)
                {
                    if (itm.StockId == model.ItemId)
                    {
                        isPresent = true;
                        if (stock.MaxAmtPerUser >= (itm.Qty + model.Qty))
                        {
                            cart.CartItems.First(m => m.Id == itm.Id).Qty += model.Qty;
                        }
                        else
                        {
                            return(-2);
                        }
                    }
                }

                if (!isPresent)
                {
                    newCartItem = new CartItem
                    {
                        StockId = model.ItemId,
                        Qty     = model.Qty,
                        DiscountConstraintId = null,
                        IsEditable           = true
                    };

                    cart.CartItems.Add(newCartItem);
                }
            }
            else
            {
                if (model.Type is null)
                {
                    return(-5);
                }

                var constraint = db.DiscountConstraints
                                 .FirstOrDefault(m => m.Id == model.ItemId &&
                                                 m.Type == model.Type);
                if (constraint is null)
                {
                    return(-6);
                }

                switch (constraint.Type)
                {
                case DiscountConstraintType.Bundle:
                {
                    var isPresent = false;
                    foreach (CartItem itm in cart.CartItems)
                    {
                        if (itm.StockId == null &&
                            itm.DiscountConstraintId == constraint.Id)
                        {
                            isPresent = true;
                            if (constraint.MaxAmt >= (itm.Qty + model.Qty))
                            {
                                cart.CartItems.First(m => m.Id == itm.Id).Qty += model.Qty;
                            }
                            else
                            {
                                return(-2);
                            }
                        }
                    }

                    if (!isPresent)
                    {
                        newCartItem = new CartItem
                        {
                            StockId = null,
                            Qty     = model.Qty,
                            DiscountConstraintId = constraint.Id,
                            IsEditable           = true
                        };

                        if (!User.Identity.IsAuthenticated)
                        {
                            newCartItem.Id = DateTime.Now.GetHashCode();
                        }

                        cart.CartItems.Add(newCartItem);
                    }

                    break;
                }

                default:
                {
                    return(-7);
                }
                }
            }

            if (User.Identity.IsAuthenticated)
            {
                db.Entry(cart).State = EntityState.Modified;
                db.SaveChanges();
            }
            else
            {
                if (HttpContext.Request.Cookies["guestCart"] is HttpCookie cookie)
                {
                    var cartCookie = JsonConvert.SerializeObject(cart);
                    cookie.Value   = cartCookie;
                    cookie.Expires = DateTime.Now.AddMinutes(60);
                    Response.Cookies.Add(cookie);
                }
                else
                {
                    return(-3);
                }
            }

            return(0);
        }
예제 #7
0
 public IActionResult Add(CartAddViewModel vm)
 {
     return(Add(vm.HamperId, vm.Quantity, vm.ReturnUrl));
 }