Example #1
0
        /// <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)
            }));
        }