From 2dfa33b5ce0eb8af39cbc5df403e96a901bd37b6 Mon Sep 17 00:00:00 2001 From: Iliyan Iliev Date: Fri, 29 May 2020 17:42:58 +0300 Subject: [PATCH] Add location limit and bigger default radius value --- .../PartnerService.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/MAVN.Service.PartnerManagement.DomainServices/PartnerService.cs b/src/MAVN.Service.PartnerManagement.DomainServices/PartnerService.cs index 12d4454..48953e6 100644 --- a/src/MAVN.Service.PartnerManagement.DomainServices/PartnerService.cs +++ b/src/MAVN.Service.PartnerManagement.DomainServices/PartnerService.cs @@ -240,7 +240,7 @@ public async Task GetNearPartnerIdsAsync(double? radiusInKm, double? lon throw new ArgumentException("Invalid argument value for get near partners request"); var searchByCoordinates = latitude.HasValue && longitude.HasValue; - radiusInKm = radiusInKm ?? 1; + radiusInKm = radiusInKm ?? 8; var locations = searchByCoordinates ? await GetLocationsByCoordinates(latitude.Value, longitude.Value, radiusInKm.Value, iso3Code) @@ -257,8 +257,9 @@ public async Task GetNearPartnerIdsAsync(double? radiusInKm, double? lon private async Task> GetLocationsByCoordinates(double latitude, double longitude, double radiusInKm, string iso3Code) { string geohash = null; - var hasAnyLocations = false; + var locationsCount = 0; IEnumerable locations = null; + const int locationsLimit = 20; //Try to get locations in radius if there are not locations in this radius, //increase it and try again until you find location or the radius exceeds the maximum allowed do @@ -287,10 +288,10 @@ private async Task> GetLocationsByCoordinates(double latit .OrderBy(l => locationDistances[l.Id]); } - hasAnyLocations = locations.Any(); + locationsCount = locations.Count(); radiusInKm *= 2; - } while (radiusInKm <= MaxRadiusInKm && !hasAnyLocations); + } while (radiusInKm <= MaxRadiusInKm && locationsCount < locationsLimit); return locations; }