public ActionResult BasicInfo(ShippingMethodEditorModel model)
        {
            var method = model.Id > 0 ? _shippingMethodService.Find(model.Id) : new ShippingMethod();

            method.Name        = model.Name;
            method.Description = model.Description;
            method.ShippingRateProviderName = model.ShippingRateProviderName;

            if (model.Id == 0)
            {
                _shippingMethodService.Create(method);
            }

            var    shippingRateProvider = _shippingRateProviderFactory.FindByName(method.ShippingRateProviderName);
            string redirectUrl          = null;

            var editor = shippingRateProvider as IHasCustomShippingRateProviderConfigEditor;

            if (editor != null || shippingRateProvider.ConfigType != null)
            {
                redirectUrl = Url.Action("ShippingRateProvider", RouteValues.From(Request.QueryString).Merge("id", method.Id));
            }
            else
            {
                redirectUrl = Url.Action("Complete", RouteValues.From(Request.QueryString).Merge("id", method.Id));
            }

            return(AjaxForm().RedirectTo(redirectUrl));
        }
Beispiel #2
0
        public void Execute(PriceCalculationContext context)
        {
            if (context.ShippingMethod != null)
            {
                var provider = _factory.FindByName(context.ShippingMethod.ShippingRateProviderName);
                if (provider != null)
                {
                    object shippingRateProviderConfig = null;
                    if (provider.ConfigType != null)
                    {
                        shippingRateProviderConfig = context.ShippingMethod.LoadShippingRateProviderConfig(provider.ConfigType);
                    }

                    var shippingCost = provider.GetShippingRate(
                        new ShippingRateCalculationContext(context.ShippingMethod, shippingRateProviderConfig, context));

                    context.ShippingCost = shippingCost;
                }
            }
        }