Skip to content
Snippets Groups Projects
Commit 1998c409 authored by lgtg20's avatar lgtg20
Browse files

feat: add studentRevenueParser middleware to handle city and region filter logic

parent fae5308f
No related branches found
No related tags found
3 merge requests!449Homologa,!444dev -> hom,!443Issue 975
/*
Middleware que remove o campo "region" quando o campo "city" está ativo nos filtros.
Devido à limitações na tabela de dados, quando ambos campos estão ativos o filtro por
"região" funciona incorretamente.
*/
module.exports = function studentRevenueParser(req, res, next) {
console.log(req.query);
if (req.query && req.query.filter) {
const jsonString = `{${req.query.filter.replace(/(\w+):/g, '"$1":')}}`;
const obj = JSON.parse(jsonString);
if ("city" in obj && "region" in obj) {
delete obj.region;
const customString = Object.entries(obj)
.map(([key, value]) => `${key}:"${value}"`)
.join(',');
req.query.filter = customString;
}
}
next();
};
......@@ -174,6 +174,7 @@ const adjustedLiquidFrequency = require(`${libs}/routes_v1/adjustedLiquidFrequen
const iliteracyRate = require(`${libs}/routes_v1/iliteracyRate`);
const studentRevenue = require(`${libs}/routes_v1/studentRevenue`);
const studentRevenueParser = require(`${libs}/middlewares/studentRevenueParser`);
api.get('/', (req, res) => {
res.json({ msg: 'SimCAQ API v1 is running' });
......@@ -249,7 +250,7 @@ api.use('/superior_education_conclusion_tax', superiorEducationConclusionTax)
api.use('/basic_education_conclusion', basicEducationConclusion);
api.use('/adjusted_liquid_frequency', adjustedLiquidFrequency);
api.use('/iliteracy_rate', iliteracyRate);
api.use('/student_revenue', studentRevenue);
api.use('/student_revenue', studentRevenueParser, studentRevenue);
//Publication
api.use('/publication', publication);
......
......@@ -79,12 +79,26 @@ rqf.addField({
type: 'integer',
field: 'ano'
}
}).addValue({
name: 'region',
table: 'estado',
tableField: ['nome_ente', 'cod_ibge', 'id', 'regiao_id'],
resultField: ['state_name', 'state_cod_ibge', 'state_id', 'region_id'],
where: {
relation: '=',
type: 'integer',
field: 'regiao_id',
},
join: {
primary: 'id',
foreign: 'cod_ibge',
foreignTable: 'receitas'
}
})
studentRevenueApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => {
if (req.query.dims && req.query.dims.includes('receitas')) {
let whereCondition = "";
let whereCondition = req.query.filter.includes("region") ? "" : "receitas.cod_ibge = 0";
let filterId;
const filters = req.query.filter.split(",");
filters.forEach((filter) => {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment