public void handle(ProductAddedToCustomerCart productAddedToCustomerCart) {
    CustomerCart customerCart =
        customerCartRepository.getCustomerCart(productAddedToCustomerCart.getCartId());

    if (customerCart == null) {
      customerCart = new CustomerCart();
      customerCart.setCustomerCartId(productAddedToCustomerCart.getCartId());
    }

    // Deal with Product Addition
    CartProduct productToAdd = getCartProduct(productAddedToCustomerCart, customerCart);

    // Remove existing version (if it exists) and add new version
    customerCart
        .getProducts()
        .removeIf(p -> p.getProductId().equals(productAddedToCustomerCart.getProductId()));
    customerCart.getProducts().add(productToAdd);

    customerCart.setCorrelationId(productAddedToCustomerCart.getCorrelationId());
    customerCart.setUpdatedAt(productAddedToCustomerCart.getUpdateDateTime());

    // Store
    customerCartRepository.storeCustomerCart(customerCart);
  }