/// <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<GetDeliveryMethodsResult, IReadOnlyCollection<ShippingMethod>> GetShippingMethods([NotNull] CommerceStorefront storefront, [NotNull] VisitorContext visitorContext, [NotNull] GetShippingMethodsInputModel inputModel) { Assert.ArgumentNotNull(storefront, "storefront"); Assert.ArgumentNotNull(visitorContext, "visitorContext"); Assert.ArgumentNotNull(inputModel, "inputModel"); GetDeliveryMethodsResult result = new GetDeliveryMethodsResult { Success = false }; var cartResult = this.CartManager.GetCurrentCart(storefront, visitorContext); if (!cartResult.ServiceProviderResult.Success || cartResult.Result == null) { result.SystemMessages.ToList().AddRange(cartResult.ServiceProviderResult.SystemMessages); return new ManagerResponse<GetDeliveryMethodsResult, IReadOnlyCollection<ShippingMethod>>(result, null); } var cart = cartResult.Result; var preferenceType = InputModelExtension.GetShippingOptionType(inputModel.ShippingPreferenceType); var request = new GetDeliveryMethodsRequest( new ShippingOption { ShippingOptionType = preferenceType }, (inputModel.ShippingAddress != null) ? inputModel.ShippingAddress.ToParty() : null) { Cart = cart, Lines = (inputModel.Lines != null) ? inputModel.Lines.ToCommerceCartLines() : null }; result = this.ShippingServiceProvider.GetShippingMethods<GetShippingMethodsRequest, GetDeliveryMethodsResult>(request); return new ManagerResponse<GetDeliveryMethodsResult, IReadOnlyCollection<ShippingMethod>>(result, result.ShippingMethods); }
/// <summary> /// Initializes a new instance of the <see cref="ShippingMethodsJsonResult"/> class. /// </summary> /// <param name="result">The result.</param> public ShippingMethodsJsonResult(GetDeliveryMethodsResult result) : base(result) { }