/// <summary> /// Gets the collection of stores within the specified search area. /// </summary> /// <param name="request">The get stores data request.</param> /// <returns> /// A collection of stores. /// </returns> private EntityDataServiceResponse <OrgUnitLocation> GetStores(GetStoresDataRequest request) { ThrowIf.Null(request, "request"); ThrowIf.Null(request.SearchArea, "request.SearchArea"); ThrowIf.Null(request.QueryResultSettings, "request.QueryResultSettings"); QueryResultSettings settings = request.QueryResultSettings; SearchArea searchArea = request.SearchArea; if (settings.ColumnSet != null && settings.ColumnSet.Count > 0 && !settings.ColumnSet.Contains(OrgUnitLocation.DistanceColumn)) { settings.ColumnSet.Add(OrgUnitLocation.DistanceColumn); } var query = new SqlPagedQuery(settings) { From = GetNearbyStoresFunctionName, OrderBy = searchArea.IsUnbounded ? "NAME ASC" : "DISTANCE ASC" }; query.Parameters[ChannelIdVariable] = request.ChannelId; query.Parameters[LongitudeVariable] = searchArea.Longitude; query.Parameters[LatitudeVariable] = searchArea.Latitude; query.Parameters[SearchDistanceVariable] = searchArea.Radius; query.Parameters[UnitConversionVariable] = searchArea.GetUnitConversion(); PagedResult <OrgUnitLocation> storeLocationsRecords; using (var sqlServerdatabaseContext = new SqlServerDatabaseContext(request)) { storeLocationsRecords = sqlServerdatabaseContext.ReadEntity <OrgUnitLocation>(query); } storeLocationsRecords = this.ParseLocations(storeLocationsRecords.Results, request.RequestContext); return(new EntityDataServiceResponse <OrgUnitLocation>(storeLocationsRecords)); }