private void OnLineItemChange(LineItemChangeType type, CartLineItem item) { _IsSaved = false; if (OnChange != null) { OnChange(type, item); } }
/// <summary> /// Deletes one <see ref="CartLineItem">Line Item </see> based on a variant id. If a line item was deleted, <c>true</c> /// will be returned. If no line items were deleted, <c>false</c> will be returned. /// </summary> /// <param name="variantId">variant id used to delete a line item</param> /// \code /// // Example that deletes a line item based on variantId /// Cart cart = ShopifyBuy.Client().Cart(); /// /// Debug.Log("Did delete? " + cart.LineItems.Delete(variantId)); /// \endcode public bool Delete(string variantId) { int idxToDelete = LineItems.FindIndex(lineItem => lineItem.VariantId == variantId); if (idxToDelete == -1) { return(false); } else { CartLineItem lineItemRemoved = LineItems[idxToDelete]; LineItems.RemoveAt(idxToDelete); if (OnChange != null) { OnChange(LineItemChangeType.Remove, lineItemRemoved); } return(true); } }
/// <summary> /// Adds or updates a line item using a <see ref="ProductVariant">ProductVariant </see>. /// </summary> /// <param name="variant"><see ref="ProductVariant">ProductVariant </see> whose id will be used to create or update a line item</param> /// <param name="quantity">the number of items you'd like to order for variantId</param> /// <param name="customAttributes">can be used to define extra information for this line item</param> /// \code /// // Example that updates the quantity of items to be purchased to 3. /// // If no line item exists for `variantId`, then a new line item is created /// Cart cart = ShopifyBuy.Client().Cart(); /// /// cart.LineItems.AddOrUpdate(variant, 3); /// \endcode public void AddOrUpdate(ProductVariant variant, long?quantity = null, Dictionary <string, string> customAttributes = null) { CartLineItem lineItem = Get(variant.id()); if (lineItem != null) { if (quantity != null && lineItem.Quantity != (long)quantity) { lineItem.Quantity = (long)quantity; } if (customAttributes != null) { lineItem.CustomAttributes = customAttributes; } } else { if (quantity == null) { quantity = 1; } lineItem = new CartLineItem( variant: variant, onChange: OnLineItemChange, quantity: (long)quantity, customAttributes: customAttributes ); LineItems.Add(lineItem); if (OnChange != null) { OnChange(LineItemChangeType.Add, lineItem); } } }