app2-api/modules/speakers/speaker.routes.js

176 lines
4.4 KiB
JavaScript
Raw Normal View History

2019-07-09 18:34:39 +00:00
const routes = require('express').Router();
const { isAdministratorUser, isLoggedUser } = require('../../middlewares/accessValidator');
const SchemaValidator = require('../../middlewares/schemaValidator');
const PaginateMiddleware = require('../../middlewares/paginate');
const FieldMiddleware = require('../../middlewares/fields');
const SortMiddleware = require('../../middlewares/sort');
//const entityValidation = require('./entity.validations');
const speakerController = require('./speaker.controller');
2019-07-23 17:34:28 +00:00
const generalInvalidFields = [
2019-07-23 17:40:44 +00:00
'userId', 'createdAt', 'state',
2019-07-23 17:34:28 +00:00
];
2019-07-09 18:34:39 +00:00
// Todos los ponentes
routes.get('/speakers',
2019-08-05 15:34:59 +00:00
isLoggedUser,
2019-07-19 15:47:06 +00:00
FieldMiddleware.middleware({
2019-07-23 17:34:28 +00:00
invalidFields: generalInvalidFields
2019-07-19 15:47:06 +00:00
}),
2019-07-09 18:34:39 +00:00
PaginateMiddleware.middleware(),
SortMiddleware.middleware({ default: "name" }),
2019-07-19 15:47:06 +00:00
speakerController.find({
2019-08-05 15:34:59 +00:00
scopes: ['defaultScope', 'onlyPublished', 'includeValues', 'includeMultimedias'],
2019-07-19 15:47:06 +00:00
})
2019-07-09 18:34:39 +00:00
);
// Ponentes destacados
routes.get('/speakers/featured',
2019-07-21 14:15:22 +00:00
isLoggedUser,
2019-07-19 15:47:06 +00:00
FieldMiddleware.middleware({
2019-07-23 17:40:44 +00:00
invalidFields: generalInvalidFields
2019-08-05 15:34:59 +00:00
}),
2019-07-09 18:34:39 +00:00
PaginateMiddleware.middleware(),
2019-07-19 15:47:06 +00:00
//SortMiddleware.middleware({ default: "name" }),
speakerController.find({
2019-08-05 15:34:59 +00:00
scopes: ['defaultScope', 'onlyPublished', 'includeValues', 'featured', 'includeMultimedias'],
2019-07-19 15:47:06 +00:00
})
2019-07-09 18:34:39 +00:00
);
// Ponentes más recientes
routes.get('/speakers/last',
2019-07-21 14:15:22 +00:00
isLoggedUser,
2019-07-19 15:47:06 +00:00
FieldMiddleware.middleware({
invalidFields: ['userId']
}),
2019-07-09 18:34:39 +00:00
PaginateMiddleware.middleware(),
SortMiddleware.middleware({ default: "-createdAt" }),
2019-07-19 15:47:06 +00:00
speakerController.find({
2019-08-05 15:34:59 +00:00
scopes: ['defaultScope', 'onlyPublished', 'last', 'includeMultimedias'],
2019-07-19 15:47:06 +00:00
})
2019-07-09 18:34:39 +00:00
);
// Un ponente
routes.get('/speakers/:id',
2019-07-21 14:15:22 +00:00
isLoggedUser,
2019-07-23 17:34:28 +00:00
FieldMiddleware.middleware({
invalidFields: generalInvalidFields
}),
speakerController.findOne({
2019-08-05 15:34:59 +00:00
scopes: ['defaultScope', 'onlyPublished', 'includeValues', 'includeMultimedias', 'includeComments'],
2019-07-23 17:34:28 +00:00
})
2019-07-09 18:34:39 +00:00
);
2019-08-05 15:34:59 +00:00
2019-07-09 20:20:59 +00:00
// Dar ponentes similares a uno dado
routes.get('/speakers/:id/similar',
2019-07-21 14:15:22 +00:00
isLoggedUser,
2019-07-09 18:34:39 +00:00
/*FieldMiddleware.middleware({
invalidFields: ['createdAt']
}),*/
PaginateMiddleware.middleware(),
2019-07-09 20:20:59 +00:00
SortMiddleware.middleware({ default: "name" }),
2019-08-20 12:10:49 +00:00
speakerController.findSimilar()
2019-07-09 18:34:39 +00:00
);
2019-07-09 20:20:59 +00:00
// Listar las preguntas hechas a un ponente
routes.get('/speakers/:id/:association',
2019-07-21 14:15:22 +00:00
isLoggedUser,
2019-07-09 18:34:39 +00:00
/*FieldMiddleware.middleware({
invalidFields: ['createdAt']
}),*/
PaginateMiddleware.middleware(),
2019-07-09 20:20:59 +00:00
SortMiddleware.middleware({ default: "-createdAt" }),
2019-08-20 12:10:49 +00:00
speakerController.find()
2019-07-09 18:34:39 +00:00
);
2019-08-09 11:00:48 +00:00
/********************************************************************************************************
2019-08-05 15:34:59 +00:00
* ADMINISTRACIÓN
*********************************************************************************************************
*/
// Todos los ponentes
routes.get('/admin/speakers',
isAdministratorUser,
2019-08-05 17:44:16 +00:00
SortMiddleware.middleware({ default: "name" }),
2019-08-05 15:34:59 +00:00
speakerController.find({
scopes: ['defaultScope', 'includeValues', 'includeMultimedias'],
})
);
// Un ponente
routes.get('/admin/speakers/:id',
isAdministratorUser,
speakerController.findOne({
scopes: ['defaultScope', 'includeValues', 'includeMultimedias']
})
);
// Comentarios de un ponente
routes.get('/admin/speakers/:id/comments',
isAdministratorUser,
(req, res, next) => {
req.params.association = 'comments';
next();
},
speakerController.find()
);
2019-08-05 17:44:16 +00:00
routes.get('/admin/speakers/:id/values',
2019-08-05 15:34:59 +00:00
isAdministratorUser,
(req, res, next) => {
req.params.association = 'values';
next();
},
speakerController.find()
);
2019-08-05 17:44:16 +00:00
routes.get('/admin/speakers/:id/questions',
2019-08-05 15:34:59 +00:00
isAdministratorUser,
(req, res, next) => {
req.params.association = 'questions';
next();
},
speakerController.find()
2019-08-05 17:44:16 +00:00
);
2019-08-05 15:34:59 +00:00
2019-08-05 17:44:16 +00:00
routes.get('/admin/speakers/:id/multimedias',
isAdministratorUser,
(req, res, next) => {
req.params.association = 'multimedias';
next();
},
speakerController.find()
);
2019-08-05 15:34:59 +00:00
// Nuevo ponente
2019-08-06 15:14:42 +00:00
routes.post('/admin/speakers/',
2019-08-05 15:34:59 +00:00
isAdministratorUser,
speakerController.create()
);
// Modificar ponente
2019-08-05 17:44:16 +00:00
routes.put('/admin/speakers/:id',
2019-08-05 15:34:59 +00:00
isAdministratorUser,
speakerController.update()
);
// Borrar ponente
2019-08-05 17:44:16 +00:00
routes.delete('/admin/speakers/:id',
2019-08-05 15:34:59 +00:00
isAdministratorUser,
speakerController.delete()
);
2019-07-09 20:20:59 +00:00
2019-07-09 18:34:39 +00:00
module.exports = routes;