コード例 #1
0
        /// <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)));
        }
コード例 #2
0
 public Task <ProcessedCart> AddLineItemsAsync(AddLineItemsParam param) => throw new NotImplementedException();