From 51f2832e4ad9823043c7ba20e70832b0a903883e Mon Sep 17 00:00:00 2001
From: Fernando Erd <fce15@inf.ufpr.br>
Date: Mon, 10 Jul 2017 11:00:04 -0300
Subject: [PATCH] Dims & Filters fixed

---
 src/libs/routes/idhm.js | 50 ++++++++++++++++++++++++++++++++++++-----
 1 file changed, 44 insertions(+), 6 deletions(-)

diff --git a/src/libs/routes/idhm.js b/src/libs/routes/idhm.js
index d99702c8..b4e1220a 100644
--- a/src/libs/routes/idhm.js
+++ b/src/libs/routes/idhm.js
@@ -86,12 +86,12 @@ rqf.addField({
         relation: '=',
         type: 'integer',
         field: 'estado_id',
-        table: 'adh_idh_uf'
+        table: '@'
     },
     join: {
         primary: 'id',
         foreign: 'estado_id',
-        foreignTable: 'adh_idh_uf'
+        foreignTable: '@'
     }
 }).addValue({
     name: 'min_year',
@@ -115,12 +115,23 @@ rqf.addField({
         table: '@',
         field: 'ano_censo'
     }
+}).addValue({
+    name: 'IDHM_level',
+    table: '@',
+    tableField: 'idhm_nivel',
+    resultField: 'idhm_nivel_id',
+    where: {
+        relation: '=',
+        type: 'integer',
+        table: '@',
+        field: 'idhm_nivel'
+    }
 });
 
 
 idhmApp.get('/', rqf.parse(), (req, res, next) => {
   log.debug(req.sql.toParam());
-  if(typeof req.filter === 'undefined' || Object.keys(req.filter).length === 0 ) {
+  if((Object.keys(req.filter).length === 0) && (Object.keys(req.dims).length === 0)) {
     res.status(400);
     next({
         status: 400,
@@ -128,16 +139,43 @@ idhmApp.get('/', rqf.parse(), (req, res, next) => {
     });
   }
   if ("state" in req.filter) {
+    console.log("BBBBB");
     req.sql.from('adh_idh_uf')
     .field('adh_idh_uf.idhm', 'IDHM')
     .field('adh_idh_uf.ano_censo', 'year')
-    .field('adh_idh_uf.estado_id', 'state_id');
+    .field('adh_idh_uf.estado_id', 'state_id')
+    .group('adh_idh_uf.idhm')
+    .group('adh_idh_uf.ano_censo')
+    .group('adh_idh_uf.estado_id')
+  } else if ("state" in req.dims) {
+    console.log("AAAAAAAAA");
+    req.sql.from('adh_idh')
+    .field('adh_idh.idhm', 'IDHM')
+    .field('adh_idh.ano_censo', 'year')
+    .field('adh_idh.municipio_id', 'city_id')
+    .field('adh_idh.estado_id', 'state_id')
+    .group('adh_idh.idhm')
+    .group('adh_idh.ano_censo')
+    .group('adh_idh.municipio_id')
+    .group('adh_idh.estado_id')
    } else if ("city" in req.filter) {
      req.sql.from('adh_idh')
      .field('adh_idh.idhm', 'IDHM')
      .field('adh_idh.ano_censo', 'year')
-     .field('adh_idh.municipio_id', 'city_id');
-   }
+     .field('adh_idh.municipio_id', 'city_id')
+     .group('adh_idh.idhm')
+     .group('adh_idh.ano_censo')
+     .group('adh_idh.municipio_id')
+   } else if ("city" in req.dims) {
+        req.sql.from('adh_idh')
+        .field('adh_idh.idhm', 'IDHM')
+        .field('adh_idh.ano_censo', 'year')
+        .field('adh_idh.municipio_id', 'city_id')
+        .group('adh_idh.idhm')
+        .group('adh_idh.ano_censo')
+        .group('adh_idh.municipio_id')
+        .group('adh_idh.estado_id')
+      }
    next();
 }, rqf.build(),query, response('idhm'));
 
-- 
GitLab