From d6b56e49b0ca4b783ac634a1347d040d28867cd0 Mon Sep 17 00:00:00 2001
From: Fernando Erd <fce15@inf.ufpr.br>
Date: Tue, 2 Oct 2018 11:36:02 -0300
Subject: [PATCH] Parcial correct indicator

---
 src/libs/routes/employees.js | 184 ++++++++++++++++++++++++++++++++---
 1 file changed, 172 insertions(+), 12 deletions(-)

diff --git a/src/libs/routes/employees.js b/src/libs/routes/employees.js
index e1114515..3ea89427 100644
--- a/src/libs/routes/employees.js
+++ b/src/libs/routes/employees.js
@@ -247,6 +247,166 @@ rqfSchool.addField({
     }
 });
 
+rqfTeacher.addField({
+    name: 'filter',
+    field: false,
+    where: true
+}).addField({
+    name: 'dims',
+    field: true,
+    where: false
+}).addValue({
+    name: 'adm_dependency',
+    table: '@',
+    tableField: 'dependencia_adm_id',
+    resultField: 'adm_dependency_id',
+    where: {
+        relation: '=',
+        type: 'integer',
+        field: 'dependencia_adm_id'
+    }
+}).addValue({
+    name: 'adm_dependency_detailed',
+    table: '@',
+    tableField: 'dependencia_adm_priv',
+    resultField: 'adm_dependency_detailed_id',
+    where: {
+        relation: '=',
+        type: 'integer',
+        field: 'dependencia_adm_priv'
+    }
+}).addValue({
+    name: 'region',
+    table: 'regiao',
+    tableField: 'nome',
+    resultField: 'region_name',
+    where: {
+        relation: '=',
+        type: 'integer',
+        field: 'id'
+    },
+    join: {
+        primary: 'id',
+        foreign: 'regiao_id',
+        foreignTable: '@'
+    }
+}).addValue({
+    name: 'state',
+    table: 'estado',
+    tableField: 'nome',
+    resultField: 'state_name',
+    where: {
+        relation: '=',
+        type: 'integer',
+        field: 'id'
+    },
+    join: {
+        primary: 'id',
+        foreign: 'estado_id',
+        foreignTable: '@'
+    }
+}).addValueToField({
+    name: 'city',
+    table: 'municipio',
+    tableField: ['nome', 'id'],
+    resultField: ['city_name', 'city_id'],
+    where: {
+        relation: '=',
+        type: 'integer',
+        field: 'id'
+    },
+    join: {
+        primary: 'id',
+        foreign: 'municipio_id',
+        foreignTable: '@'
+    }
+}, 'dims').addValueToField({
+    name: 'city',
+    table: 'municipio',
+    tableField: 'nome',
+    resultField: 'city_name',
+    where: {
+        relation: '=',
+        type: 'integer',
+        field: 'id'
+    },
+    join: {
+        primary: 'id',
+        foreign: 'municipio_id',
+        foreignTable: '@'
+    }
+}, 'filter').addValueToField({
+    name: 'school',
+    table: 'escola',
+    tableField: ['nome_escola', 'id'],
+    resultField: ['school_name', 'school_id'],
+    where: {
+        relation: '=',
+        type: 'integer',
+        field: 'id'
+    },
+    join: {
+        primary: ['id','ano_censo'],
+        foreign: ['id','ano_censo'],
+        foreignTable: '@'
+    }
+}, 'dims').addValueToField({
+    name: 'school',
+    table: 'escola',
+    tableField: 'nome_escola',
+    resultField: 'school_name',
+    where: {
+        relation: '=',
+        type: 'integer',
+        field: 'id'
+    },
+    join: {
+        primary: ['id','ano_censo'],
+        foreign: ['id','ano_censo'],
+        foreignTable: '@'
+    }
+}, 'filter').addValue({
+    name: 'location',
+    table: '@',
+    tableField: 'cod_localizacao',
+    resultField: 'location_id',
+    where: {
+        relation: '=',
+        type: 'integer',
+        field: 'cod_localizacao'
+    }
+}).addValue({
+    name: 'rural_location',
+    table: '@',
+    tableField: 'localidade_area_rural',
+    resultField: 'rural_location_id',
+    where: {
+        relation: '=',
+        type: 'integer',
+        field: 'localidade_area_rural'
+    }
+}).addValue({
+    name: 'min_year',
+    table: '@',
+    tableField: 'ano_censo',
+    resultField: 'year',
+    where: {
+        relation: '>=',
+        type: 'integer',
+        field: 'ano_censo'
+    }
+}).addValue({
+    name: 'max_year',
+    table: '@',
+    tableField: 'ano_censo',
+    resultField: 'year',
+    where: {
+        relation: '<=',
+        type: 'integer',
+        field: 'ano_censo'
+    }
+});
+
 
 function matchQueries(queryTotal, queryPartial) {
     let match = [];
@@ -317,21 +477,21 @@ employeesApp.get('/', rqfSchool.parse(), (req, res, next) => {
     req.resetSql();
 
     if ("school" in req.filter) {
-        req.sql.field('SUM(professor_por_escola.total_professores)', 'total')
+        req.sql.field('SUM(docente_por_escola.total_professores)', 'total')
         .field("'Brasil'", 'name')
-        .field('professor_por_escola.ano_censo', 'year')
-        .from('professor_por_escola')
-        .group('professor_por_escola.ano_censo')
-        .order('professor_por_escola.ano_censo')
-        .where('(professor_por_escola.dependencia_adm_id > 1) AND (escola.id=' + req.filter.school + ')');
+        .field('docente_por_escola.ano_censo', 'year')
+        .from('docente_por_escola')
+        .group('docente_por_escola.ano_censo')
+        .order('docente_por_escola.ano_censo')
+        .where('(docente_por_escola.dependencia_adm_id > 1) AND (docente_por_escola.id=' + req.filter.school + ')');
     } else {
-        req.sql.field('SUM(professor_por_escola.total_professores)', 'total')
+        req.sql.field('SUM(docente_por_escola.total_professores)', 'total')
         .field("'Brasil'", 'name')
-        .field('professor_por_escola.ano_censo', 'year')
-        .from('professor_por_escola')
-        .group('professor_por_escola.ano_censo')
-        .order('professor_por_escola.ano_censo')
-        .where('(professor_por_escola.dependencia_adm_id > 1)');
+        .field('docente_por_escola.ano_censo', 'year')
+        .from('docente_por_escola')
+        .group('docente_por_escola.ano_censo')
+        .order('docente_por_escola.ano_censo')
+        .where('(docente_por_escola.dependencia_adm_id > 1)');
     }
     next();
 
-- 
GitLab