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);
 }
예제 #2
0
        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);
        }
예제 #4
0
        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);
        }