public async Task <IViewComponentResult> InvokeAsync()
        {
            var cart      = new ShoppingCartHelper(this.HttpContext);
            var cartId    = cart.GetCartId();
            int cartCount = await apiHelper.GetAsync <int>("/api/ShoppingCart/Count?id=" + cartId);

            if (this.HttpContext.User.Identity.IsAuthenticated)
            {
                string userName = new ContextHelper().GetUsernameFromClaims(this.HttpContext);

                int userCartCount = await apiHelper.GetAsync <int>("/api/ShoppingCart/Count?id=" + userName);

                if (userName != cartId && userCartCount == 0)
                {
                    CartMigration migration = new CartMigration()
                    {
                        SourceCartId = cartId,
                        DestCartId   = userName
                    };
                    await apiHelper.PostAsync <CartMigration>("/api/ShoppingCart/MigrateCart", migration);

                    cartCount = userCartCount;
                }
                if (cartId != userName)
                {
                    cart.SetCartId(userName);
                    cartCount = await apiHelper.GetAsync <int>("/api/ShoppingCart/Count?id=" + userName);
                }
            }

            ViewData["CartCount"] = cartCount;
            return(View());
        }
 public ActionResult MigrateCart(CartMigration cartMigration)
 {
     new ShoppingCart(storeDB, cartMigration.SourceCartId).MigrateCart(cartMigration.DestCartId);
     return(Ok());
 }