public async Task <ActionResult> CartShippingMethodsJson() { await _cartBuilder.GetOrCreateNewTransientCartAsync(WorkContext.CurrentStore, WorkContext.CurrentCustomer, WorkContext.CurrentLanguage, WorkContext.CurrentCurrency); var shippingMethods = await _cartApi.CartModuleGetShipmentMethodsAsync(_cartBuilder.Cart.Id); return(Json(shippingMethods.Select(sm => sm.ToWebModel()), JsonRequestBehavior.AllowGet)); }
public virtual async Task <ICollection <ShippingMethod> > GetAvailableShippingMethodsAsync() { var availableShippingMethods = new List <ShippingMethod>(); // TODO: Remake with shipmentId var serviceModels = await _cartApi.CartModuleGetShipmentMethodsAsync(_cart.Id); foreach (var serviceModel in serviceModels) { availableShippingMethods.Add(serviceModel.ToWebModel(new Currency[] { _cart.Currency }, _cart.Language)); } return(availableShippingMethods); }
private async Task ValidateShipmentsAsync(ShoppingCart cart) { var workContext = _workContextFactory(); foreach (var shipment in cart.Shipments) { shipment.ValidationErrors.Clear(); var availableShippingMethods = await _cacheManager.GetAsync("CartValidator.ValidateShipmentsAsync-" + workContext.CurrentCurrency + ":" + cart.Id, "ApiRegion", async() => { return(await _cartApi.CartModuleGetShipmentMethodsAsync(cart.Id)); }); if (availableShippingMethods.Count == 0) { shipment.ValidationWarnings.Add(new ShippingUnavailableError()); break; } if (!string.IsNullOrEmpty(shipment.ShipmentMethodCode)) { var existingShippingMethod = availableShippingMethods.FirstOrDefault(sm => sm.ShipmentMethodCode == shipment.ShipmentMethodCode); if (existingShippingMethod == null) { shipment.ValidationWarnings.Add(new ShippingUnavailableError()); break; } if (existingShippingMethod != null) { var shippingMethod = existingShippingMethod.ToWebModel(workContext.AllCurrencies, workContext.CurrentLanguage); if (shippingMethod.Price != shipment.ShippingPrice && (cart.ValidationType == ValidationType.PriceAndQuantity || cart.ValidationType == ValidationType.Price)) { shipment.ValidationWarnings.Add(new ShippingPriceError(shipment.ShippingPrice)); cart.Shipments.Clear(); cart.Shipments.Add(shippingMethod.ToShipmentModel(cart.Currency)); } } } } }