public ActionResult Update(Guid cartItemId, Guid albumId, int newQty)
        {
            var qtyUpdateRequest = new AlbumQtyUpdateRequest {
                AlbumId = albumId, NewQty = newQty
            };

            var request = new EditCartRequest();

            request.ItemsToUpdate.Add(qtyUpdateRequest);
            request.Id = GetCartId();

            var response = _cartService.EditCart(request);

            SaveCartSummaryToCookie(response.Cart.NumberOfItems, response.Cart.CartTotal.ToString(CultureInfo.InvariantCulture));

            var albumName = response.Cart.Items.Single(item => item.Album.Id == albumId).Album.Title;

            var results = new UpdateCartItemViewModel
            {
                Message   = "The qty of " + Server.HtmlEncode(albumName) + " has been refreshed in your shopping cart.",
                CartTotal = response.Cart.CartTotal.FormatMoney(),
                CartCount = response.Cart.NumberOfItems,
                ItemQty   = response.Cart.Items.Single(item => item.Album.Id == albumId).Qty,
                DeleteId  = cartItemId
            };

            return(Json(results));
        }
        public ActionResult Remove(Guid cartItemId, Guid albumId)
        {
            var album = _albumService.GetAlbum(new GetAlbumRequest {
                Id = albumId
            }).Album;

            var request = new EditCartRequest();

            request.ItemsToRemove.Add(albumId);
            request.Id = GetCartId();

            var response = _cartService.EditCart(request);

            SaveCartSummaryToCookie(response.Cart.NumberOfItems, response.Cart.CartTotal.ToString(CultureInfo.InvariantCulture));

            var results = new RemoveCartItemViewModel
            {
                Message   = Server.HtmlEncode(album.Title) + " has been removed from your cart.",
                CartTotal = response.Cart.CartTotal.FormatMoney(),
                CartCount = response.Cart.NumberOfItems,
                ItemQty   = 0,
                DeleteId  = cartItemId
            };

            return(Json(results));
        }
Example #3
0
        public EditCartResponse EditCart(EditCartRequest request)
        {
            var response = new EditCartResponse();

            var cart = _cartRepository.FindBy(request.Id);

            if (cart == null)
            {
                throw new CartDoesNotExistException();
            }

            AddAlbumsToCart(request.ItemsToAdd, cart);

            UpdateLineQtys(request.ItemsToUpdate, cart);

            RemoveAlbumsFromCart(request.ItemsToRemove, cart);

            ThrowExceptionIfCartIsInvalid(cart);

            _cartRepository.Save(cart);

            _uow.Commit();

            response.Cart = cart.ConvertToCartView();

            return(response);
        }
        // GET: /Cart/Add
        public ActionResult Add(Guid id)
        {
            var cartId = GetCartId();

            var createNewCart = cartId == Guid.Empty;

            CartSummaryViewModel summaryModel;

            if (createNewCart == false)
            {
                var editCartRequest = new EditCartRequest();

                editCartRequest.ItemsToAdd.Add(id);

                editCartRequest.Id = cartId;

                try
                {
                    var editCartResponse = _cartService.EditCart(editCartRequest);

                    summaryModel = editCartResponse.Cart.ConvertToCartSummaryViewModel();

                    SaveCartSummaryToCookie(summaryModel.NumberOfItems, summaryModel.CartTotal.ToString(CultureInfo.InvariantCulture));
                }
                catch (CartDoesNotExistException)
                {
                    createNewCart = true;
                }
            }

            if (!createNewCart)
            {
                return(RedirectToLocal("/Cart"));
            }

            var createCartRequest = new CreateCartRequest();

            createCartRequest.AlbumsToAdd.Add(id);

            var response = _cartService.CreateCart(createCartRequest);

            SaveCartIdToCookie(response.Cart.Id);

            summaryModel = response.Cart.ConvertToCartSummaryViewModel();

            SaveCartSummaryToCookie(summaryModel.NumberOfItems, summaryModel.CartTotal.ToString(CultureInfo.InvariantCulture));

            return(RedirectToLocal("/Cart"));
        }