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 #2
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));
        }