public async Task <IActionResult> Index()
        {
            //get cart items (from cookie)
            _cartService.LoadCart();

            //get current products
            var cartItems = _cartService.GetAll();
            var products  = await _productRep.GetAll().Where(p => cartItems
                                                             .Select(cp => cp.ProductId)
                                                             .Contains(p.Id)).ToListAsync();

            var vm = new CartIndexVm();

            //fill VM with necessary product details, synchronizing cart item with product
            foreach (var cartItem in cartItems)
            {
                var product = products.FirstOrDefault(p => p.Id == cartItem.ProductId);
                if (product == null)
                {
                    continue;
                }
                vm.Items.Add(new CartItemVm {
                    ProductId = product.Id,
                    Name      = product.Name,
                    Quantity  = cartItem.Quantity,
                    UnitPrice = product.Price
                });
            }

            return(View(vm));
        }
        public IActionResult UpdateCart(CartIndexVm inputmdl)
        {
            _cartService.LoadCart();
            foreach (var ciVm in inputmdl.Items)
            {
                _cartService.UpdateCartItem(ciVm.ProductId, ciVm.Quantity);
            }
            _cartService.SaveCart();

            return(RedirectToAction("Index"));
        }