/// <summary> /// Gets the shipping methods. /// </summary> /// <param name="storefront">The storefront.</param> /// <param name="visitorContext">The visitor context.</param> /// <param name="option">The option.</param> /// <returns>The manager response where the shipping methods are returned in the result.</returns> public ManagerResponse <Connect.Services.Orders.GetShippingMethodsResult, IReadOnlyCollection <ShippingMethod> > GetShippingMethods([NotNull] CommerceStorefront storefront, [NotNull] VisitorContext visitorContext, [NotNull] ShippingOption option) { Assert.ArgumentNotNull(storefront, "storefront"); Assert.ArgumentNotNull(visitorContext, "visitorContext"); Assert.ArgumentNotNull(option, "option"); // TODO: Remove hard coded language - will be fixed in connect. var request = new Connect.Services.Orders.GetShippingMethodsRequest("en-us", option, null); var result = this.ShippingServiceProvider.GetShippingMethods <Connect.Services.Orders.GetShippingMethodsRequest, Connect.Services.Orders.GetShippingMethodsResult>(request); Helpers.LogSystemMessages(result.SystemMessages, result); return(new ManagerResponse <Connect.Services.Orders.GetShippingMethodsResult, IReadOnlyCollection <ShippingMethod> >(result, result.ShippingMethods)); }
/// <summary> /// Gets the shipping methods. /// </summary> /// <param name="storefront">The storefront.</param> /// <param name="visitorContext">The visitor context.</param> /// <param name="inputModel">The input model.</param> /// <returns> /// The manager response where the shipping methods are returned in the Result. /// </returns> public ManagerResponse <Connect.Services.Orders.GetShippingMethodsResult, IReadOnlyCollection <ShippingMethod> > GetShippingMethods([NotNull] CommerceStorefront storefront, [NotNull] VisitorContext visitorContext, [NotNull] GetShippingMethodsInputModel inputModel) { Assert.ArgumentNotNull(storefront, "storefront"); Assert.ArgumentNotNull(visitorContext, "visitorContext"); Assert.ArgumentNotNull(inputModel, "inputModel"); var errorResult = new Connect.Services.Orders.GetShippingMethodsResult { Success = false }; var cartResult = this.CartManager.GetCurrentCart(storefront, visitorContext); if (!cartResult.ServiceProviderResult.Success || cartResult.Result == null) { errorResult.SystemMessages.ToList().AddRange(cartResult.ServiceProviderResult.SystemMessages); return(new ManagerResponse <Connect.Services.Orders.GetShippingMethodsResult, IReadOnlyCollection <ShippingMethod> >(errorResult, null)); } var cart = cartResult.Result; var preferenceType = InputModelExtension.GetShippingOptionType(inputModel.ShippingPreferenceType); if (inputModel.Lines != null && inputModel.Lines.Any()) { // We only support a single line at a time, hence accessing element 0 is ok. preferenceType = InputModelExtension.GetShippingOptionType(inputModel.Lines[0].ShippingPreferenceType); } // TODO: Remove hard coded language - will be fixed in connect. var request = new Connect.Services.Orders.GetShippingMethodsRequest( "en-us", new ShippingOption { ShippingOptionType = preferenceType }, (inputModel.ShippingAddress != null) ? inputModel.ShippingAddress.ToParty() : null) { Cart = cart, Lines = (inputModel.Lines != null) ? inputModel.Lines.ToCommerceCartLines().Cast <CartLine>().ToList() : null }; var result = this.ShippingServiceProvider.GetShippingMethods <Connect.Services.Orders.GetShippingMethodsRequest, Connect.Services.Orders.GetShippingMethodsResult>(request); Helpers.LogSystemMessages(errorResult.SystemMessages, errorResult); return(new ManagerResponse <Connect.Services.Orders.GetShippingMethodsResult, IReadOnlyCollection <ShippingMethod> >(result, result.ShippingMethods)); }
/// <summary> /// Gets the shipping methods. /// </summary> /// <param name="storefront">The storefront.</param> /// <param name="visitorContext">The visitor context.</param> /// <param name="inputModel">The input model.</param> /// <returns> /// The manager response where the shipping methods are returned in the Result. /// </returns> public ManagerResponse<Connect.Services.Orders.GetShippingMethodsResult, IReadOnlyCollection<ShippingMethod>> GetShippingMethods([NotNull] CommerceStorefront storefront, [NotNull] VisitorContext visitorContext, [NotNull] GetShippingMethodsInputModel inputModel) { Assert.ArgumentNotNull(storefront, "storefront"); Assert.ArgumentNotNull(visitorContext, "visitorContext"); Assert.ArgumentNotNull(inputModel, "inputModel"); var errorResult = new Connect.Services.Orders.GetShippingMethodsResult { Success = false }; var cartResult = this.CartManager.GetCurrentCart(storefront, visitorContext); if (!cartResult.ServiceProviderResult.Success || cartResult.Result == null) { errorResult.SystemMessages.ToList().AddRange(cartResult.ServiceProviderResult.SystemMessages); return new ManagerResponse<Connect.Services.Orders.GetShippingMethodsResult, IReadOnlyCollection<ShippingMethod>>(errorResult, null); } var cart = cartResult.Result; var preferenceType = InputModelExtension.GetShippingOptionType(inputModel.ShippingPreferenceType); if (inputModel.Lines != null && inputModel.Lines.Any()) { // We only support a single line at a time, hence accessing element 0 is ok. preferenceType = InputModelExtension.GetShippingOptionType(inputModel.Lines[0].ShippingPreferenceType); } // TODO: Remove hard coded language - will be fixed in connect. var request = new Connect.Services.Orders.GetShippingMethodsRequest( "en-us", new ShippingOption { ShippingOptionType = preferenceType }, (inputModel.ShippingAddress != null) ? inputModel.ShippingAddress.ToParty() : null) { Cart = cart, Lines = (inputModel.Lines != null) ? inputModel.Lines.ToCommerceCartLines().Cast<CartLine>().ToList() : null }; var result = this.ShippingServiceProvider.GetShippingMethods<Connect.Services.Orders.GetShippingMethodsRequest, Connect.Services.Orders.GetShippingMethodsResult>(request); Helpers.LogSystemMessages(errorResult.SystemMessages, errorResult); return new ManagerResponse<Connect.Services.Orders.GetShippingMethodsResult, IReadOnlyCollection<ShippingMethod>>(result, result.ShippingMethods); }
/// <summary> /// Gets the shipping methods. /// </summary> /// <param name="storefront">The storefront.</param> /// <param name="visitorContext">The visitor context.</param> /// <param name="option">The option.</param> /// <returns>The manager response where the shipping methods are returned in the result.</returns> public ManagerResponse<Connect.Services.Orders.GetShippingMethodsResult, IReadOnlyCollection<ShippingMethod>> GetShippingMethods([NotNull] CommerceStorefront storefront, [NotNull] VisitorContext visitorContext, [NotNull] ShippingOption option) { Assert.ArgumentNotNull(storefront, "storefront"); Assert.ArgumentNotNull(visitorContext, "visitorContext"); Assert.ArgumentNotNull(option, "option"); // TODO: Remove hard coded language - will be fixed in connect. var request = new Connect.Services.Orders.GetShippingMethodsRequest("en-us", option, null); var result = this.ShippingServiceProvider.GetShippingMethods<Connect.Services.Orders.GetShippingMethodsRequest, Connect.Services.Orders.GetShippingMethodsResult>(request); Helpers.LogSystemMessages(result.SystemMessages, result); return new ManagerResponse<Connect.Services.Orders.GetShippingMethodsResult, IReadOnlyCollection<ShippingMethod>>(result, result.ShippingMethods); }