server/src/app/Http/Controllers/Api/GeoStatsController.php
changeset 378 5b47eab083f3
parent 377 52169c718513
child 406 cf0f23803a53
--- 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 = [];