2022-02-23 18:27:58 +00:00
|
|
|
const routes = require("express").Router();
|
2019-07-09 18:34:39 +00:00
|
|
|
|
2022-02-23 18:27:58 +00:00
|
|
|
const { isAdministratorUser, isLoggedUser, isOptionalUser } = require("../../middlewares/accessValidator");
|
|
|
|
|
const { cacheSuccesses } = require("../../middlewares/cache");
|
2019-07-09 18:34:39 +00:00
|
|
|
|
2022-02-23 18:27:58 +00:00
|
|
|
const PaginateMiddleware = require("../../middlewares/paginate");
|
|
|
|
|
const FieldMiddleware = require("../../middlewares/fields");
|
|
|
|
|
const SortMiddleware = require("../../middlewares/sort");
|
2019-07-09 18:34:39 +00:00
|
|
|
|
|
|
|
|
//const entityValidation = require('./entity.validations');
|
2022-02-23 18:27:58 +00:00
|
|
|
const speakerController = require("./speaker.controller");
|
2019-07-09 18:34:39 +00:00
|
|
|
|
2022-02-23 18:27:58 +00:00
|
|
|
const generalInvalidFields = ["userId", "createdAt", "state"];
|
2019-07-23 17:34:28 +00:00
|
|
|
|
2019-07-09 18:34:39 +00:00
|
|
|
// Todos los ponentes
|
2022-02-23 18:27:58 +00:00
|
|
|
routes.get(
|
|
|
|
|
"/speakers",
|
|
|
|
|
isOptionalUser,
|
|
|
|
|
cacheSuccesses("1 minute"),
|
|
|
|
|
FieldMiddleware.middleware({
|
|
|
|
|
invalidFields: generalInvalidFields,
|
|
|
|
|
}),
|
|
|
|
|
PaginateMiddleware.middleware(),
|
|
|
|
|
SortMiddleware.middleware({ default: "name" }),
|
|
|
|
|
speakerController.find({
|
|
|
|
|
scopes: ["defaultScope", "onlyPublished", "includeValues", "includeMultimedias"],
|
|
|
|
|
})
|
2019-07-09 18:34:39 +00:00
|
|
|
);
|
|
|
|
|
|
|
|
|
|
// Ponentes destacados
|
2022-02-23 18:27:58 +00:00
|
|
|
routes.get(
|
|
|
|
|
"/speakers/featured",
|
|
|
|
|
isOptionalUser,
|
|
|
|
|
cacheSuccesses("1 minute"),
|
|
|
|
|
FieldMiddleware.middleware({
|
|
|
|
|
invalidFields: generalInvalidFields,
|
|
|
|
|
}),
|
|
|
|
|
PaginateMiddleware.middleware(),
|
|
|
|
|
//SortMiddleware.middleware({ default: "name" }),
|
|
|
|
|
speakerController.find({
|
|
|
|
|
scopes: ["defaultScope", "onlyPublished", "includeValues", "featured", "includeMultimedias"],
|
|
|
|
|
})
|
2019-07-09 18:34:39 +00:00
|
|
|
);
|
|
|
|
|
|
|
|
|
|
// Ponentes más recientes
|
2022-02-23 18:27:58 +00:00
|
|
|
routes.get(
|
|
|
|
|
"/speakers/last",
|
|
|
|
|
isOptionalUser,
|
|
|
|
|
cacheSuccesses("1 minute"),
|
|
|
|
|
FieldMiddleware.middleware({
|
|
|
|
|
invalidFields: ["userId"],
|
|
|
|
|
}),
|
|
|
|
|
PaginateMiddleware.middleware(),
|
|
|
|
|
SortMiddleware.middleware({ default: "-createdAt" }),
|
|
|
|
|
speakerController.find({
|
|
|
|
|
scopes: ["defaultScope", "onlyPublished", "last", "includeMultimedias"],
|
|
|
|
|
})
|
2019-07-09 18:34:39 +00:00
|
|
|
);
|
|
|
|
|
|
|
|
|
|
// Un ponente
|
2022-02-23 18:27:58 +00:00
|
|
|
routes.get(
|
|
|
|
|
"/speakers/:id",
|
|
|
|
|
isOptionalUser,
|
|
|
|
|
cacheSuccesses("24 hours"),
|
|
|
|
|
FieldMiddleware.middleware({
|
|
|
|
|
invalidFields: generalInvalidFields,
|
|
|
|
|
}),
|
|
|
|
|
speakerController.findOne({
|
|
|
|
|
scopes: ["defaultScope", "onlyPublished", "includeValues", "includeMultimedias", "includeComments"],
|
|
|
|
|
})
|
2019-07-09 18:34:39 +00:00
|
|
|
);
|
|
|
|
|
|
2019-07-09 20:20:59 +00:00
|
|
|
// Dar ponentes similares a uno dado
|
2022-02-23 18:27:58 +00:00
|
|
|
routes.get(
|
|
|
|
|
"/speakers/:id/similar",
|
|
|
|
|
isOptionalUser,
|
|
|
|
|
cacheSuccesses("24 hours"),
|
|
|
|
|
/*FieldMiddleware.middleware({
|
2019-07-09 18:34:39 +00:00
|
|
|
invalidFields: ['createdAt']
|
|
|
|
|
}),*/
|
2022-02-23 18:27:58 +00:00
|
|
|
PaginateMiddleware.middleware(),
|
|
|
|
|
SortMiddleware.middleware({ default: "name" }),
|
|
|
|
|
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
|
2022-02-23 18:27:58 +00:00
|
|
|
routes.get(
|
|
|
|
|
"/speakers/:id/:association",
|
|
|
|
|
isLoggedUser,
|
|
|
|
|
/*FieldMiddleware.middleware({
|
2019-07-09 18:34:39 +00:00
|
|
|
invalidFields: ['createdAt']
|
|
|
|
|
}),*/
|
2022-02-23 18:27:58 +00:00
|
|
|
PaginateMiddleware.middleware(),
|
|
|
|
|
SortMiddleware.middleware({ default: "-createdAt" }),
|
|
|
|
|
speakerController.find()
|
2019-07-09 18:34:39 +00:00
|
|
|
);
|
|
|
|
|
|
2019-08-09 11:00:48 +00:00
|
|
|
/********************************************************************************************************
|
2022-02-23 18:27:58 +00:00
|
|
|
* ADMINISTRACIÓN
|
|
|
|
|
*********************************************************************************************************
|
2019-08-05 15:34:59 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// Todos los ponentes
|
2022-02-23 18:27:58 +00:00
|
|
|
routes.get(
|
|
|
|
|
"/admin/speakers",
|
|
|
|
|
isAdministratorUser,
|
|
|
|
|
SortMiddleware.middleware({ default: "name" }),
|
|
|
|
|
speakerController.find({
|
|
|
|
|
scopes: ["defaultScope", "includeValues", "includeMultimedias"],
|
|
|
|
|
})
|
|
|
|
|
);
|
2019-08-05 15:34:59 +00:00
|
|
|
|
|
|
|
|
// Un ponente
|
2022-02-23 18:27:58 +00:00
|
|
|
routes.get(
|
|
|
|
|
"/admin/speakers/:id",
|
|
|
|
|
isAdministratorUser,
|
|
|
|
|
speakerController.findOne({
|
|
|
|
|
scopes: ["defaultScope", "includeValues", "includeMultimedias"],
|
|
|
|
|
})
|
2019-08-05 15:34:59 +00:00
|
|
|
);
|
|
|
|
|
|
|
|
|
|
// Comentarios de un ponente
|
2022-02-23 18:27:58 +00:00
|
|
|
routes.get(
|
|
|
|
|
"/admin/speakers/:id/comments",
|
|
|
|
|
isAdministratorUser,
|
|
|
|
|
(req, res, next) => {
|
|
|
|
|
req.params.association = "comments";
|
|
|
|
|
next();
|
|
|
|
|
},
|
|
|
|
|
speakerController.find()
|
2019-08-05 15:34:59 +00:00
|
|
|
);
|
|
|
|
|
|
2022-02-23 18:27:58 +00:00
|
|
|
routes.get(
|
|
|
|
|
"/admin/speakers/:id/values",
|
|
|
|
|
isAdministratorUser,
|
|
|
|
|
(req, res, next) => {
|
|
|
|
|
req.params.association = "values";
|
|
|
|
|
next();
|
|
|
|
|
},
|
|
|
|
|
speakerController.find()
|
2019-08-05 15:34:59 +00:00
|
|
|
);
|
|
|
|
|
|
2022-02-23 18:27:58 +00:00
|
|
|
routes.get(
|
|
|
|
|
"/admin/speakers/:id/questions",
|
|
|
|
|
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
|
|
|
|
2022-02-23 18:27:58 +00:00
|
|
|
routes.get(
|
|
|
|
|
"/admin/speakers/:id/multimedias",
|
|
|
|
|
isAdministratorUser,
|
|
|
|
|
(req, res, next) => {
|
|
|
|
|
req.params.association = "multimedias";
|
|
|
|
|
next();
|
|
|
|
|
},
|
|
|
|
|
speakerController.find()
|
2019-08-05 17:44:16 +00:00
|
|
|
);
|
2019-08-05 15:34:59 +00:00
|
|
|
|
|
|
|
|
// Nuevo ponente
|
2022-02-23 18:27:58 +00:00
|
|
|
routes.post("/admin/speakers/", isAdministratorUser, speakerController.create());
|
2019-08-05 15:34:59 +00:00
|
|
|
|
2022-02-23 18:27:58 +00:00
|
|
|
// Modificar ponente
|
|
|
|
|
routes.put("/admin/speakers/:id", isAdministratorUser, speakerController.update());
|
2019-08-05 15:34:59 +00:00
|
|
|
|
|
|
|
|
// Borrar ponente
|
2022-02-23 18:27:58 +00:00
|
|
|
routes.delete("/admin/speakers/:id", isAdministratorUser, speakerController.delete());
|
2019-07-09 20:20:59 +00:00
|
|
|
|
2022-02-23 18:27:58 +00:00
|
|
|
module.exports = routes;
|