コード例 #1
0
ファイル: CartController.cs プロジェクト: losol/sjop
        public async Task <ActionResult <CartVM> > AddProductToCart([FromBody] AddItemToCartVM product)
        {
            _logger.LogInformation("*** Add item to cart requested ***");
            if (product == null)
            {
                return(BadRequest());
            }

            CartVM cart =
                HttpContext.Session.Get <CartVM>("_Cart") ??
                new CartVM();

            if (cart.CartId == null)
            {
                cart.CartId = Guid.NewGuid().ToString();
            }

            var dbproduct = await _context.Products.Where(o => o.Id == product.ProductId).FirstOrDefaultAsync();

            var existingCartItem = cart.CartItems.Where(
                p => p.ProductId == product.ProductId)
                                   .FirstOrDefault() ?? null;

            if (existingCartItem != null)
            {
                var cartitem = cart.CartItems.Where(
                    p => p.ProductId == product.ProductId)
                               .FirstOrDefault()
                               .Quantity += 1;
            }
            else
            {
                var newItem = new CartItem()
                {
                    ProductId = product.ProductId,
                    Quantity  = 1,
                    CartId    = Guid.Parse(cart.CartId),
                    Product   = dbproduct
                };

                cart.CartItems.Add(newItem);
            }

            // Update shipping cost
            cart.ShippingCost = GetShippingCost(cart);

            // Save Cart to session
            HttpContext.Session.Set <CartVM>("_Cart", cart);

            return(cart);
        }
コード例 #2
0
ファイル: CartController.cs プロジェクト: losol/sjop
        public async Task <ActionResult <CartVM> > RemoveProductFromCart([FromBody] AddItemToCartVM product)
        {
            _logger.LogInformation("*** Remove item from cart requested ***");
            if (product == null)
            {
                return(BadRequest());
            }

            CartVM cart =
                HttpContext.Session.Get <CartVM>("_Cart") ??
                new CartVM();

            if (cart.CartId == null)
            {
                cart.CartId = Guid.NewGuid().ToString();
            }

            var dbproduct = await _context.Products.Where(o => o.Id == product.ProductId).FirstOrDefaultAsync();

            var existingCartItem = cart.CartItems.Where(
                p => p.ProductId == product.ProductId)
                                   .FirstOrDefault() ?? null;

            if (existingCartItem != null)
            {
                cart.CartItems.Where(
                    p => p.ProductId == product.ProductId)
                .FirstOrDefault()
                .Quantity -= 1;
            }

            cart.CartItems.RemoveAll(p => p.Quantity == 0);

            // TODO do this in a proper way
            if (cart.ShippingCost.TotalShippingCost == 0)
            {
                {
                    cart.ShippingCost.ShippingCost      = 31.2M;
                    cart.ShippingCost.VatPercent        = 25;
                    cart.ShippingCost.TotalShippingCost = 39;
                }
            }

            // Save Cart to session
            HttpContext.Session.Set <CartVM>("_Cart", cart);

            return(cart);
        }