diff --git a/src/libs/models/indicator.js b/src/libs/models/indicator.js index 02cf8d94bff4a5715abb179a6eb8582c6078b3d2..21d2df21b941b28e00716f2738aecba4a833433d 100644 --- a/src/libs/models/indicator.js +++ b/src/libs/models/indicator.js @@ -7,7 +7,7 @@ const Filters = require(`${libs}/models/filters`); // set up a mongoose model var IndicatorSchema = new Schema({ filters: { - type: [Schema.types.ObjectId], + type: [Schema.Types.ObjectId], ref: 'Filters' }, name: { @@ -38,7 +38,8 @@ var IndicatorSchema = new Schema({ required: true }, noSchools: { - type: Boolean + type: Boolean, + default: false } }); diff --git a/src/libs/routes/api.js b/src/libs/routes/api.js index 167c989ea75eb8a8968178a83d19be96841edec2..acc70f72cd1916c11c4003091243e6c604676e27 100644 --- a/src/libs/routes/api.js +++ b/src/libs/routes/api.js @@ -12,11 +12,14 @@ const user = require(`${libs}/routes/user`); const message = require(`${libs}/routes/message`); +const indicator = require(`${libs}/routes/indicator`); + api.get('/', (req, res) => { res.json({ msg: 'SimCAQ API is running' }); }); api.use('/user', user); api.use('/message', message); +api.use('/indicator', indicator); module.exports = api; diff --git a/src/libs/routes/indicator.js b/src/libs/routes/indicator.js new file mode 100644 index 0000000000000000000000000000000000000000..7bf10660b1ec0dc13090b91e0217809b0e4c6f90 --- /dev/null +++ b/src/libs/routes/indicator.js @@ -0,0 +1,76 @@ +const express = require('express'); + +const indicatorApp = express(); + +const libs = `${process.cwd()}/libs`; + +const config = require(`${libs}/config`); + +const log = require(`${libs}/log`)(module); + +const Indicator = require(`${libs}/models/indicator`); + +indicatorApp.get('/', (req, res, next) => { + Indicator.find((err, indicators) => { + if(err) { + res.status(500).json({error: 'Erro do servidor', text: 'O servidor encontrou um erro ao processar a requisição', err}); + } + res.json(indicators); + }); +}); + +indicatorApp.put('/:id', (req, res, next) => { + Indicator.findById(req.params.id, (err, indicator) => { + if(!indicator) { + res.status(404).json({error: 'Não encontrado', text: 'Nenhum indicador foi encontrado', err}); + } + if(!err) { + indicator.name = req.body.name | indicator.name; + indicator.url = req.body.url | indicator.url; + indicator.active = req.body.active | indicator.active; + indicator.description = req.body.description | indicator.description; + indicator.route = req.body.route | indicator.route; + indicator.source = req.body.source | indicator.source; + indicator.noSchools = req.body.noSchools | indicator.noSchools; + indicator.save((err) => { + if(err) { + res.status(500).json({error: 'Erro do servidor', text: 'O servidor encontrou um erro ao processar a requisição', err}); + } + res.json(indicator); + }); + } else { + res.status(500).json({error: 'Erro do servidor', text: 'O servidor encontrou um erro ao processar a requisição', err}); + } + }); +}); + +indicatorApp.post('/', (req, res, next) => { + req.checkBody('name', 'Nome é um campo obrigatório').notEmpty(); + req.checkBody('url', 'A url é um campo obrigatório').notEmpty(); + req.checkBody('route', 'A rota é um campo obrigatório').notEmpty(); + req.checkBody('source', 'A fonte é um campo obrigatório').notEmpty(); + req.getValidationResult().then(function(result) { + if (!result.isEmpty()) { + res.status(400).send({errors: result.array()}); + return; + } + let indicator = new Indicator({ + name: req.body.name, + url: req.body.url, + active: req.body.url, + description: req.body.description, + route: req.body.route, + source: req.body.source, + noSchools: req.body.noSchools + }); + + indicator.save((err) => { + if(err) { + res.status(500).json({error: 'Erro do servidor', text: 'O servidor encontrou um erro ao processar a requisição', err}); + } + res.json(indicator); + }); + }); +}); + +module.exports = indicatorApp;