public static double CalculateDestination(this Overture.ServiceModel.Customers.Stores.Store store, Coordinate searchPoint) { return(store.HasLocation() ? Math.Round(GeoCodeCalculator.CalcDistance(store.GetLatitude(), store.GetLongitude(), searchPoint.Lat, searchPoint.Lng, EarthRadiusMeasurement.Kilometers), 2) : double.MaxValue); }
public virtual StoreViewModel CreateStoreViewModel(CreateStoreViewModelParam param) { var store = param.Store; var storeViewModel = ViewModelMapper.MapTo <StoreViewModel>(store, param.CultureInfo); storeViewModel.Address = CreateStoreAddressViewModel(param); storeViewModel.LocalizedDisplayName = GetStoreLocalizedDisplayName(storeViewModel, param.CultureInfo); storeViewModel.FulfillmentLocationId = store.FulfillmentLocation.Id; storeViewModel.GoogleDirectionsLink = GetGoogleDirectionsLink(storeViewModel.Address); storeViewModel.GoogleStaticMapUrl = GetGoogleStaticMapUrl(storeViewModel.Address); storeViewModel.Url = StoreUrlProvider.GetStoreUrl(new GetStoreUrlParam() { BaseUrl = param.BaseUrl, CultureInfo = param.CultureInfo, StoreNumber = store.Number, StoreName = storeViewModel.Name }); if (param.SearchPoint != null && storeViewModel.Address.Latitude != null && storeViewModel.Address.Longitude != null) { storeViewModel.DestinationToSearchPoint = Math.Round(GeoCodeCalculator.CalcDistance( storeViewModel.Address.Latitude.Value, storeViewModel.Address.Longitude.Value, param.SearchPoint.Lat, param.SearchPoint.Lng, EarthRadiusMeasurement.Kilometers), 2); } storeViewModel.Schedule = CreateStoreScheduleViewModel(param); return(storeViewModel); }
public void WHEN_coordinates_SHOULD_return_expected_distance(double lat1, double lng1, double lat2, double lng2, double expectedDistanceInKilometers, double expectedDistanceInMiles) { var distanceInMiles = Math.Round(GeoCodeCalculator.CalcDistance(lat1, lng1, lat2, lng2, EarthRadiusMeasurement.Miles), 2); var distanceInKilometers = Math.Round(GeoCodeCalculator.CalcDistance(lat1, lng1, lat2, lng2, EarthRadiusMeasurement.Kilometers), 2); distanceInKilometers.ShouldBeEquivalentTo(expectedDistanceInKilometers); distanceInMiles.ShouldBeEquivalentTo(expectedDistanceInMiles); }
public static double CalculateDestination(this Overture.ServiceModel.Customers.Stores.Store store, Coordinate searchPoint, LengthMeasureUnitEnum lengthMeasureUnit) { double radius = lengthMeasureUnit == LengthMeasureUnitEnum.km ? EarthRadiusMeasurement.Kilometers : EarthRadiusMeasurement.Miles; return(store.HasLocation() ? Math.Round(GeoCodeCalculator.CalcDistance(store.GetLatitude(), store.GetLongitude(), searchPoint.Lat, searchPoint.Lng, radius), 2) : double.MaxValue); }
public virtual StoreViewModel CreateStoreViewModel(CreateStoreViewModelParam param) { var store = param.Store; var storeViewModel = ViewModelMapper.MapTo <StoreViewModel>(store, param.CultureInfo); storeViewModel.Address = CreateStoreAddressViewModel(param); storeViewModel.LocalizedDisplayName = GetStoreLocalizedDisplayName(storeViewModel, param.CultureInfo); storeViewModel.FulfillmentLocationId = store.FulfillmentLocation.Id; storeViewModel.GoogleDirectionsLink = GetGoogleDirectionsLink(storeViewModel.Address); storeViewModel.GoogleStaticMapUrl = GetGoogleStaticMapUrl(storeViewModel.Address); storeViewModel.Url = StoreUrlProvider.GetStoreUrl(new GetStoreUrlParam() { BaseUrl = param.BaseUrl, CultureInfo = param.CultureInfo, StoreNumber = store.Number, StoreName = storeViewModel.Name }); if (param.SearchPoint != null && storeViewModel.Address.Latitude != null && storeViewModel.Address.Longitude != null) { double earthRadius = GoogleMaps.GoogleMapsSettings.LengthMeasureUnit == Enums.LengthMeasureUnitEnum.km ? EarthRadiusMeasurement.Kilometers : EarthRadiusMeasurement.Miles; storeViewModel.DestinationToSearchPoint = Math.Round(GeoCodeCalculator.CalcDistance( storeViewModel.Address.Latitude.Value, storeViewModel.Address.Longitude.Value, param.SearchPoint.Lat, param.SearchPoint.Lng, earthRadius), 2); storeViewModel.LengthMeasureUnit = GoogleMaps.GoogleMapsSettings.LengthMeasureUnit.ToString(); } storeViewModel.Schedule = CreateStoreScheduleViewModel(param); if (param.Store.FulfillmentLocation != null) { storeViewModel.SupportDelivery = param.Store.FulfillmentLocation.SupportDelivery; storeViewModel.SupportPickUp = param.Store.FulfillmentLocation.SupportPickUp; storeViewModel.InventoryLocationId = param.Store.FulfillmentLocation.InventoryLocationId; } return(storeViewModel); }