/// <summary> /// Get shippping item with rules /// </summary> /// <param name="shippingItem">base shippingItem</param> /// <param name="pickupId">pickupId (pickpoint id)</param> /// <param name="pickupAddress">pickupAddress (pickpoint address)</param> /// <param name="additionalData">additional pickup data</param> /// <param name="cityToDelivery">City to delivery</param> /// <returns></returns> public static ShippingItem GetListShippingItem(ShippingItem shippingItem, int pickupId, string pickupAddress, string additionalData, string cityToDelivery) { if (shippingItem.Ext != null && (shippingItem.Ext.Type == ExtendedType.Pickpoint || shippingItem.Ext.Type == ExtendedType.CashOnDelivery || shippingItem.Ext.Type == ExtendedType.Boxberry || shippingItem.Ext.Type == ExtendedType.Cdek)) { shippingItem.Ext.PickpointId = pickupId.ToString(); shippingItem.Ext.PickpointAddress = pickupAddress; shippingItem.Ext.AdditionalData = additionalData; if (shippingItem.Type == ShippingType.Multiship) { var cart = ShoppingCartService.CurrentShoppingCart; var multiship = new Multiship(GetShippingParams(shippingItem.MethodId)) { CityTo = cityToDelivery, ShoppingCart = cart, TotalPrice = cart.TotalPrice - cart.TotalDiscount, }; var multishipOption = multiship.GetOptions(false) .Find(x => x.Extend != null && x.Extend.PickpointId == pickupId.ToString()); if (multishipOption != null) { shippingItem.Rate = multishipOption.Rate; } } } return(shippingItem); }
private IEnumerable <ShippingItem> GetMultishipShippingRates() { var multiship = new Multiship(_method.Params) { CityTo = _cityTo, ShoppingCart = _shoppingCart, TotalPrice = _totalPrice - _totalDiscount, PickUpId = _pickupId }; var multishipOptions = multiship.GetShippingOptions(); if (multishipOptions == null || !multishipOptions.Any()) { return(new List <ShippingItem>()); } return(multishipOptions.Select(item => new ShippingItem(_method) { Id = ++_index, Type = ShippingType.Multiship, MethodNameRate = item.Name, Rate = item.Rate, IsMinimumRate = item.IsMinimumRate, DeliveryTime = item.DeliveryTime, Ext = GetItemExt(item.Extend) })); }