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