Example #1
0
        public void CalculateShipping(string address, double addressLatitude, double addressLongitude, Guid shippingMethodId)
        {
            if (_items == null || _items.Count == 0)
            {
                throw new Exception("No item to calculate");
            }

            if (string.IsNullOrEmpty(address) || shippingMethodId == Guid.Empty)
            {
                throw new Exception("address and shipping method required");
            }

            if (_isPreCalculated == false)
            {
                PreCalculate();
            }

            var  id               = Guid.Parse(Id);
            long shippingFee      = ShippingMethodServices.ShippingCost(id, shippingMethodId, address, addressLatitude, addressLongitude);
            var  orderPromotionId = Guid.Empty;
            var  orderPromo       = OrderPromotionServices.CalculateForShipping(id);

            if (orderPromo != null)
            {
                if (orderPromo.FreeShip)
                {
                    shippingFee = 0;
                }
                orderPromotionId = orderPromo.Id;
            }

            ApplyChange(new ShoppingCartPromotionCalulatedForOrderShipping(id, orderPromotionId));

            ApplyChange(new ShoppingCartCalculatedShipping(id, shippingMethodId, shippingFee));
        }
        public long CalculateCost(Guid shoppingCartId, ShippingMethod config, string address, double latitude, double longitude)
        {
            var distance = ShippingMethodServices.CalculateDistance(shoppingCartId, address, latitude, longitude);

            if (distance > 1)
            {
                return((long)(distance * config.UnitCost));
            }
            return(config.UnitCost);
        }
Example #3
0
        public JsonResult EstimateShippingCost(Guid shippingMethodId, string address, double addressLatitude, double addressLongitude)
        {
            if (shippingMethodId == Guid.Empty || string.IsNullOrEmpty(address))
            {
                return(Json(new { Ok = false, Data = new { }, Message = "shipping method, address required" }, JsonRequestBehavior.AllowGet));
            }
            var id = GetShoppingCartId();

            MemoryMessageBuss.PushCommand(new EstimateShippingCostForShoppingCart(id, shippingMethodId, address, addressLatitude, addressLongitude));
            ShoppingCart cart;

            using (var db = new CoreEcommerceDbContext())
            {
                cart = db.ShoppingCarts.SingleOrDefault(i => i.Id == id);
            }

            double distance = ShippingMethodServices.CalculateDistance(id, address, addressLatitude, addressLongitude);

            return(Json(new { Ok = true, Data = new { Cart = cart, Distance = distance }, Message = "Success" }, JsonRequestBehavior.AllowGet));
        }