--- a/server/src/app/Http/Controllers/Api/DateStatsController.php Mon Nov 14 17:23:43 2016 +0100
+++ b/server/src/app/Http/Controllers/Api/DateStatsController.php Tue Nov 15 17:42:57 2016 +0100
@@ -12,23 +12,8 @@
class DateStatsController extends Controller
{
- /**
- * Display the specified resource.
- *
- * @return \Illuminate\Http\Response
- */
- public function index(Request $request)
- {
-
-
- $filterManager = new CorpusFilterManager();
- $filters = $filterManager->prepareFilters($request);
- unset($filters['dates']);
- $qFilterParts = $filterManager->buildESFilters($filters);
-
- $query = $filterManager->buildQuery($qFilterParts);
-
- $esQuery = [
+ private function getStatQuery($query) {
+ return [
'index' => config('elasticsearch.index'),
'body' => [
"size" => 0,
@@ -60,6 +45,70 @@
]
]
];
+ }
+
+ private function getMinMaxQuery($query) {
+ return [
+ 'index' => config('elasticsearch.index'),
+ 'body' => [
+ "size" => 0,
+ "query" => $query,
+ "aggs" => [
+ "datestats" => [
+ "nested"=> [
+ "path" => "creation_years"
+ ],
+ "aggs" => [
+ "minyear" => [
+ "min" => [ "field"=> "creation_years.year" ]
+ ],
+ "maxyear" => [
+ "max" => [ "field"=> "creation_years.year" ]
+ ]
+ ]
+ ]
+ ]
+ ]
+ ];
+ }
+
+ private function getDocQuery(Request $request) {
+ $filterManager = new CorpusFilterManager();
+ $filters = $filterManager->prepareFilters($request);
+ unset($filters['dates']);
+ $qFilterParts = $filterManager->buildESFilters($filters);
+
+ return $filterManager->buildQuery($qFilterParts);
+ }
+
+ /**
+ * Display the min max date stats
+ */
+ public function minmax(Request $request) {
+ $query = $this->getDocQuery($request);
+
+ $esQuery = $this->getMinMaxQuery($query);
+ $esRes = Es::search($esQuery);
+
+ $datestats = [];
+
+ $max = intval($esRes['aggregations']['datestats']['maxyear']['value']);
+ $min = intval($esRes['aggregations']['datestats']['maxyear']['value']);
+
+ return response()->json(['dateminmax' => [ $min, $max ] ]);
+ }
+
+ /**
+ * Display the dates stats
+ *
+ * @return \Illuminate\Http\Response
+ */
+ public function index(Request $request)
+ {
+
+ $query = $this->getDocQuery($request);
+
+ $esQuery = $this->getStatQuery($query);
$esRes = Es::search($esQuery);
$datestats = [];