/// <summary> /// Reorders one or more items from an existing order. /// </summary> /// <param name="storefront">The storefront context.</param> /// <param name="visitorContext">The visitor context.</param> /// <param name="inputModel">The reorder input model.</param> /// <returns>The result of the operation.</returns> public ManagerResponse <CartResult, CommerceCart> Reorder([NotNull] CommerceStorefront storefront, [NotNull] VisitorContext visitorContext, ReorderInputModel inputModel) { Assert.ArgumentNotNull(storefront, "storefront"); Assert.ArgumentNotNull(visitorContext, "visitorContext"); Assert.ArgumentNotNull(inputModel, "inputModel"); Assert.ArgumentNotNullOrEmpty(inputModel.OrderId, "inputModel.OrderId"); var request = new ReorderByCartNameRequest() { CustomerId = visitorContext.GetCustomerId(), OrderId = inputModel.OrderId, ReorderLineExternalIds = inputModel.ReorderLineExternalIds, CartName = storefront.DefaultCartName, OrderShippingPreferenceType = ShippingOptionType.ShipToAddress, }; var cartCache = CommerceTypeLoader.CreateInstance <CartCacheHelper>(); cartCache.InvalidateCartCache(visitorContext.GetCustomerId()); var result = this.OrderServiceProvider.Reorder(request); if (result.Success && result.Cart != null) { cartCache.AddCartToCache(result.Cart as CommerceCart); } Helpers.LogSystemMessages(result.SystemMessages, result); return(new ManagerResponse <CartResult, CommerceCart>(result, result.Cart as CommerceCart)); }
public ManagerResponse <CartResult, CommerceCart> Reorder(string userId, ReorderInputModel inputModel) { Assert.ArgumentNotNull(inputModel, nameof(inputModel)); Assert.ArgumentNotNullOrEmpty(inputModel.OrderId, nameof(inputModel.OrderId)); var request = new ReorderByCartNameRequest { CustomerId = userId, OrderId = inputModel.OrderId, ReorderLineExternalIds = inputModel.ReorderLineExternalIds, CartName = CommerceConstants.CartSettings.DefaultCartName, OrderShippingPreferenceType = ShippingOptionType.ShipToAddress }; var result = OrderServiceProvider.Reorder(request); result.WriteToSitecoreLog(); return(new ManagerResponse <CartResult, CommerceCart>(result, result.Cart as CommerceCart)); }