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 ...@@ -174,6 +174,7 @@ const adjustedLiquidFrequency = require(`${libs}/routes_v1/adjustedLiquidFrequen
const iliteracyRate = require(`${libs}/routes_v1/iliteracyRate`); const iliteracyRate = require(`${libs}/routes_v1/iliteracyRate`);
const studentRevenue = require(`${libs}/routes_v1/studentRevenue`); const studentRevenue = require(`${libs}/routes_v1/studentRevenue`);
const studentRevenueParser = require(`${libs}/middlewares/studentRevenueParser`);
api.get('/', (req, res) => { api.get('/', (req, res) => {
res.json({ msg: 'SimCAQ API v1 is running' }); res.json({ msg: 'SimCAQ API v1 is running' });
...@@ -249,7 +250,7 @@ api.use('/superior_education_conclusion_tax', superiorEducationConclusionTax) ...@@ -249,7 +250,7 @@ api.use('/superior_education_conclusion_tax', superiorEducationConclusionTax)
api.use('/basic_education_conclusion', basicEducationConclusion); api.use('/basic_education_conclusion', basicEducationConclusion);
api.use('/adjusted_liquid_frequency', adjustedLiquidFrequency); api.use('/adjusted_liquid_frequency', adjustedLiquidFrequency);
api.use('/iliteracy_rate', iliteracyRate); api.use('/iliteracy_rate', iliteracyRate);
api.use('/student_revenue', studentRevenue); api.use('/student_revenue', studentRevenueParser, studentRevenue);
//Publication //Publication
api.use('/publication', publication); api.use('/publication', publication);
......
...@@ -79,12 +79,26 @@ rqf.addField({ ...@@ -79,12 +79,26 @@ rqf.addField({
type: 'integer', type: 'integer',
field: 'ano' 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) => { studentRevenueApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => {
if (req.query.dims && req.query.dims.includes('receitas')) { if (req.query.dims && req.query.dims.includes('receitas')) {
let whereCondition = ""; let whereCondition = req.query.filter.includes("region") ? "" : "receitas.cod_ibge = 0";
let filterId; let filterId;
const filters = req.query.filter.split(","); const filters = req.query.filter.split(",");
filters.forEach((filter) => { 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