diff -r 52169c718513 -r 5b47eab083f3 server/src/app/Http/Controllers/Api/GeoStatsController.php --- a/server/src/app/Http/Controllers/Api/GeoStatsController.php Thu Oct 20 17:27:36 2016 +0200 +++ b/server/src/app/Http/Controllers/Api/GeoStatsController.php Thu Oct 20 19:14:37 2016 +0200 @@ -5,6 +5,8 @@ use Illuminate\Http\Request; use CorpusParole\Http\Controllers\Controller; +use CorpusParole\Libraries\Filters\CorpusFilterManager; + use Es; use Log; @@ -18,21 +20,30 @@ public function index(Request $request) { $area = $request->input('area'); - $filter = [ - 'match_all' => [] - ]; + + $filterManager = new CorpusFilterManager(); + $filters = $filterManager->prepareFilters($request); + unset($filters['location']); + $qFilterParts = $filterManager->buildESFilters($filters); + if(is_null($qFilterParts)) { + $qFilterParts = []; + } + if(!is_null($area) && $area !== config('corpusparole.geonames_earth_geonamesid')) { - $filter = [ + $qFilterParts[] = [ 'term' => [ "geonames_hierarchy" => $area ] ]; } - $query = [ + + $query = $filterManager->buildQuery($qFilterParts); + + $queryES = [ 'index' => env('ELASTICSEARCH_INDEX'), 'body' => [ "size" => 0, - "query" => $filter, + "query" => $query, "aggs" => [ "geos" => [ "terms" => [ @@ -43,7 +54,7 @@ ] ] ]; - $esRes = Es::search($query); + $esRes = Es::search($queryES); $geosats = [];