/// <summary> /// Add default shipping provider to an order. (the cheapest) /// </summary> public static void AutoSelectShippingProvider(OrderInfo orderInfo) { var shippingProvidersForOrder = GetShippingProvidersForOrder(orderInfo); if (shippingProvidersForOrder == null || shippingProvidersForOrder.Count == 0) { Log.Instance.LogDebug("AutoSelectShippingProvider: No shipping providers for order"); return; } var shippingMethods = new List <ShippingProviderMethod>(); foreach (var prov in shippingProvidersForOrder) { shippingMethods.AddRange(prov.ShippingProviderMethods); } var shippingProviderMethod = shippingMethods.OrderBy(x => x.PriceInCents).FirstOrDefault(); var shippingProviderForOrder = shippingProvidersForOrder.FirstOrDefault(x => x.ShippingProviderMethods.Contains(shippingProviderMethod)); if (shippingProviderForOrder == null) { Log.Instance.LogDebug("AutoSelectShippingProvider: shippingProviderForOrder == null"); return; } if (shippingProviderMethod == null) { Log.Instance.LogDebug("AutoSelectShippingProvider: No shipping method for " + shippingProviderForOrder.Title); return; } orderInfo.AddShippingProvider(shippingProviderForOrder.Id, shippingProviderMethod.Id); orderInfo.ShippingCostsMightBeOutdated = false; }