public void addCartItem(CartItem cartItem) { String productId = cartItem.getProduct().getProductId(); if (cartItems.containsKey(productId)) { CartItem existingCartItem = cartItems.get(productId); existingCartItem.setQuantity(existingCartItem.getQuantity() + cartItem.getQuantity()); cartItems.put(productId, existingCartItem); } else { cartItems.put(productId, cartItem); } updateGrandTotal(); }
public void removeFromCart(String cartId, String productId, int quantity) { synchronized (lock) { List<CartItem> itemsForCart = carts.get(cartId); if (itemsForCart == null) return; final CartItem cartItem = findCartItemForProduct(cartId, productId); if (cartItem == null) return; cartItem.decreaseQuantity(quantity); if (cartItem.getQuantity() == 0) itemsForCart.remove(cartItem); } }
public BigDecimal getSubTotal() { BigDecimal subTotal = new BigDecimal("0"); Iterator<CartItem> items = getAllCartItems(); while (items.hasNext()) { CartItem cartItem = (CartItem) items.next(); Item item = cartItem.getItem(); BigDecimal listPrice = item.getListPrice(); BigDecimal quantity = new BigDecimal(String.valueOf(cartItem.getQuantity())); subTotal = subTotal.add(listPrice.multiply(quantity)); } return subTotal; }
// returns list of items ordered so far by the user public CartItem decreaseQuantity(Long cartId) { DynamoDBMapper mapper = this.conn.getMapper(); DynamoDBScanExpression scanExpression = new DynamoDBScanExpression(); Map<String, Condition> scanFilter = new HashMap<String, Condition>(); Condition scanCondition = new Condition() .withComparisonOperator(ComparisonOperator.EQ.toString()) .withAttributeValueList(new AttributeValue().withN(cartId.toString())); scanFilter.put("CartId", scanCondition); scanExpression.setScanFilter(scanFilter); PaginatedScanList<CartItem> items = mapper.scan(CartItem.class, scanExpression); CartItem item = items.get(0); item.setQuantity(item.getQuantity() - 1); mapper.save(item); return item; }