diff --git a/src/libs/middlewares/aggregateData.js b/src/libs/middlewares/aggregateData.js index 8dbf01d7bbae35fbd18821f850c26ba17c93cbd7..0aab03415abda3ef381b7e57979aad14a20c78d7 100644 --- a/src/libs/middlewares/aggregateData.js +++ b/src/libs/middlewares/aggregateData.js @@ -78,6 +78,7 @@ function aggregateData(req, res, next) { let currentAggregateField; let currentNonAggregateField; + console.log("data pre aggregate" ,req.result) // Verifica se o filtro passado está presente nos filtros agregados fields.forEach(field => {if (aggregateFields.includes(field)) currentAggregateField = field; else currentNonAggregateField = field}); if (currentAggregateField) { @@ -109,6 +110,7 @@ function aggregateData(req, res, next) { req.result = newResult; } } + console.log("data pos aggregate" ,req.result) next(); } diff --git a/src/libs/routes_v1/expenses.js b/src/libs/routes_v1/expenses.js index 624609e8a1b0239b1985a8de3b4e675137c7c5f1..0e578f2e663414eb3641496670685e710b221ac1 100644 --- a/src/libs/routes_v1/expenses.js +++ b/src/libs/routes_v1/expenses.js @@ -51,6 +51,14 @@ ExpensesApp.get('/years', (req, res, next) => { next(); }, query, response('years')) +ExpensesApp.get('/type', (req, res, next) => { + req.result = [] + + req.result.push({ id: 1, name: "Rede Estadual" }); + req.result.push({ id: 2, name: "Rede Municipal" }); + next(); +}, response('type')); + // rqf.addValue({ // name: 'location', // table: 'despesas', @@ -111,33 +119,44 @@ rqf.addField({ ExpensesApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { - if (req.query.dims && req.query.dims.includes('despesas')) { - let whereCondition = req.query.filter.includes("region") ? "" : "despesas.cod_ibge = 0"; - let filterId; - const filters = req.query.filter.split(","); - filters.forEach((filter) => { - if (filter.includes("state") || filter.includes("city")) { - filterId = Number(filter.split(":")[1].replace(/"/g, "")); - whereCondition = `despesas.cod_ibge = ${filterId}` + let obj = {} + let typeFilter = false; + let whereCondition = req.query.filter.includes("region") ? "" : "despesas.cod_ibge = 0"; + let filterId; + const filters = req.query.filter.split(","); + filters.forEach((filter) => { + if (filter.includes("state") || filter.includes("city")) { + filterId = Number(filter.split(":")[1].replace(/"/g, "")); + whereCondition = `despesas.cod_ibge = ${filterId}` + } + }) + + if (req.query.filter) { + const jsonString = `{${req.query.filter.replace(/(\w+):/g, '"$1":')}}`; + obj = JSON.parse(jsonString); + if (obj.type) { + if (obj.type.includes("1") && !obj.type.includes("2")) { + whereCondition = "despesas.cod_ibge >= 11 and despesas.cod_ibge <= 53" } - }) + else if (obj.type.includes("2") && !obj.type.includes("1")) { + whereCondition = "despesas.cod_ibge > 53" + } + + typeFilter = true; + } + } + if (!typeFilter || (typeFilter && (!obj.state && !obj.city && !obj.region))) { req.sql.from('despesas') .field('despesas.ano_censo', 'year') .field('despesas.ano_censo', 'total_ano') .field('despesas.nome_ente', 'total_nome_ente') - .field('round(despesas.despesas,2)', 'total_despesas') - .field('matriculas_publica', 'total_matriculas_publica') - .field('matriculas_publicas_mais_conveniada', 'total_matriculas_publicas_mais_conveniada') - .field('round(gasto_aluno_ano_publica,2)', 'total_gasto_aluno_ano_publica') - .field('round(gasto_aluno_mes_publica,2)', 'total_gasto_aluno_mes_publica') - .field('round(gasto_aluno_ano_publica_mais_conveniada,2)', 'total_gasto_aluno_ano_publica_mais_conveniada') - .field('round(gasto_aluno_mes_publica_mais_conveniada,2)', 'total_gasto_aluno_mes_publica_mais_conveniada') + .field('round(despesas.despesas,2)', 'total') .where(`${whereCondition}`) .order('despesas.ano_censo') } next(); -}, query, aggregateData, id2str.transform(false), response('expenses')); +}, query, id2str.transform(false), response('expenses')); module.exports = ExpensesApp; \ No newline at end of file