public bool setProductAmount(Store store, Product product, int amount) { Predicate <ShoppingCartAndStore> cartPredicat = s => ((ShoppingCartAndStore)s).store.Equals(store); ShoppingCartAndStore cartAndStore = cartsList.Find(cartPredicat); //remove product from list if (amount == 0) { //check if the storecart is empty now if (containStore(cartPredicat)) { ShoppingCart cart = cartAndStore.cart; //set product amount to zero cart.setProductAmount(product, amount); int storeAmount = cart.getTotalAmount(); if (storeAmount == 0) { cartsList.Remove(cartAndStore); } WorkshopProject.Log.Logger.Log("event", logLevel.INFO, $"set product {product.getId()} amount {amount} to basket {id}"); } return(true); } else if (amount > 0) { if (containStore(cartPredicat)) { ShoppingCart cart = cartAndStore.cart; WorkshopProject.Log.Logger.Log("event", logLevel.INFO, $"set product {product.getId()} amount {amount} to basket {id}"); return(cart.setProductAmount(product, amount)); } } return(false); }