/// <summary> /// Add one or more line items to a cart. /// In case cart does not exist - it will be created. /// If a product or a variant already exists in a cart, it will be merged with adding ones. /// </summary> /// <param name="param">Parameters to be used for adding</param> /// <returns>Processed cart</returns> public virtual Task <ProcessedCart> AddLineItemsAsync(AddLineItemsParam param) { if (param == null) { throw new ArgumentNullException(nameof(param)); } if (string.IsNullOrWhiteSpace(param.CartName)) { throw new ArgumentException(GetMessageOfNullWhiteSpace(nameof(param.CartName)), nameof(param)); } if (string.IsNullOrWhiteSpace(param.Scope)) { throw new ArgumentException(GetMessageOfNullWhiteSpace(nameof(param.Scope)), nameof(param)); } if (param.CultureInfo == null) { throw new ArgumentException(GetMessageOfNull(nameof(param.CultureInfo)), nameof(param)); } if (param.CustomerId == Guid.Empty) { throw new ArgumentException(GetMessageOfEmpty(nameof(param.CustomerId)), nameof(param)); } if (param.LineItems == null || param.LineItems.Count == 0) { throw new ArgumentException(GetMessageOfNullEmpty(nameof(param.LineItems)), nameof(param)); } AddOrUpdateLineItemsRequest request = new AddOrUpdateLineItemsRequest { CartName = param.CartName, CartType = param.CartType, CultureName = param.CultureInfo.Name, CustomerId = param.CustomerId, LineItems = param.LineItems, ScopeId = param.Scope }; CacheKey cacheKey = BuildCartCacheKey(param.Scope, param.CustomerId, param.CartName); return(CacheProvider.ExecuteAndSetAsync(cacheKey, () => OvertureClient.SendAsync(request))); }
public Task <ProcessedCart> AddLineItemsAsync(AddLineItemsParam param) => throw new NotImplementedException();