Ejemplo n.º 1
0
        public IActionResult AddToCard(int productId, int count)
        {
            var returnMessage = new ReturnMessage();
            var product       = Products.Where(q => q.Id == productId).FirstOrDefault();

            if (product == null)
            {
                returnMessage.SetErrorMessage("Ürün listesinde bulunamadı.");
                return(Json(returnMessage));
            }

            var cartList = SessionHelper.GetObjectFromJson <List <ProductModel> >(HttpContext.Session, "cart");

            if (cartList == null)
            {
                cartList = new List <ProductModel>();
            }
            if (!cartList.Any(q => q.Id == productId))
            {
                if (product.Quantity >= count)
                {
                    product.BasketCount = count;
                }
                else
                {
                    returnMessage.setMessageFirst("Yetersiz Stok!", product.BasketCount, product);
                    return(Json(returnMessage));
                }
                cartList.Add(product);
                returnMessage.SetSuccessMessage("Ürün başarıyla eklendi.", product);
            }
            else
            {
                var cartItem = cartList.FirstOrDefault(q => q.Id == productId);
                if (cartItem.BasketCount > 0)
                {
                    if (cartItem.Quantity >= count)
                    {
                        cartItem.BasketCount = count;
                    }

                    returnMessage.setMessage("Ürün sepette mevcut, artırmak ister misiniz?", cartItem.BasketCount, cartItem);
                    SessionHelper.SetObjectAsJson(HttpContext.Session, "cart", cartList);
                    return(Json(returnMessage));
                }
                cartItem.BasketCount = count;
                returnMessage.SetSuccessMessage("Ürün başarıyla eklendi.", cartItem);
            }
            SessionHelper.SetObjectAsJson(HttpContext.Session, "cart", cartList);
            return(Json(returnMessage));
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> AddToCart(string productId, int?quantity)
        {
            string cartId        = GetCart(_services);
            var    returnMessage = new ReturnMessage();
            var    product       = await _productRepository.All.FirstOrDefaultAsync(d => d.Id == productId);

            if (product == null)
            {
                returnMessage.SetErrorMessage("Không tìm thấy trong danh sách sản phẩm.");
                return(Json(returnMessage));
            }
            _shoppingCart.AddToCartSession(product, cartId, quantity.GetValueOrDefault());
            //var dto = new ProductViewModel();
            //PropertyCopy.Copy(product, dto);
            var session = HttpContext.Session.Get <List <CartProductViewModel> >("AddProducts");

            if (session != null)
            {
                //Check exist with item product id
                if (session.Any(x => x.Id == productId))
                {
                    foreach (var item in session)
                    {
                        //Update quantity for product if match product id
                        if (item.Id == productId)
                        {
                            //if (quantity != null) item.Quantity += (int)quantity;
                            //item.Price = product.Price.GetValueOrDefault();
                            //hasChanged = true;
                            if (quantity != null && quantity > 0)
                            {
                                item.Quantity = quantity.GetValueOrDefault();
                                returnMessage.setMessage("Sản phẩm đã có sẵn trong giỏ, bạn có muốn tăng thêm không?", item.Quantity);
                            }
                            HttpContext.Session.Set("AddProducts", session);
                            return(Json(returnMessage));
                        }
                    }
                }
                else
                {
                    if (quantity != null)
                    {
                        session.Add(new CartProductViewModel()
                        {
                            Id       = product.Id,
                            Product  = _productRepository.GetProductViewModelById(product.Id),
                            Price    = (long)product.PriceAfter.GetValueOrDefault(),
                            Quantity = quantity.Value
                        });
                    }
                    //hasChanged = true;
                    returnMessage.SetSuccessMessage("Sản phẩm đã được thêm thành công.");
                    HttpContext.Session.Set("AddProducts", session);
                    return(Json(returnMessage));
                }

                //Update back to cart
                //if (hasChanged)
                //{
                //    HttpContext.Session.Set("AddProducts", session);
                //}
            }
            else
            {
                //Add new cart
                if (quantity != null)
                {
                    {
                        var cart = new List <CartProductViewModel>
                        {
                            new CartProductViewModel()
                            {
                                Id       = product.Id,
                                Product  = _productRepository.GetProductViewModelById(product.Id),
                                Price    = (long)product.PriceAfter.GetValueOrDefault(),
                                Quantity = quantity.Value
                            }
                        };
                        HttpContext.Session.Set("AddProducts", cart);
                        returnMessage.SetSuccessMessage("Sản phẩm đã được thêm thành công.");
                        return(Json(returnMessage));
                    }
                }
                else
                {
                    returnMessage.setMessageFirst("Kiểm tra số lượng");
                    return(Json(returnMessage));
                }
            }
            return(Json(returnMessage));
        }