Crear preguntas a los ponentes

This commit is contained in:
David Arranz 2019-09-19 13:30:32 +02:00
parent aca096bf3d
commit 3e4e79fa08
11 changed files with 96 additions and 21 deletions

View File

@ -74,11 +74,13 @@ const generateControllers = (service, extraControllers = {}, options = {}) => {
create: (config) => { create: (config) => {
return async (req, res, next) => { return async (req, res, next) => {
const params = extractParamsFromRequest(req, res, _options.params.count);
try { try {
//Asignamos el usuario que crea el elemento //Asignamos el usuario que crea el elemento
req.body.userId = req.user.id; req.body.userId = req.user.id;
console.log('SERVICE CREATE ->', req.body); const values = Object.assign({}, params.params, req.body);
const result = await service.create(req.body, buildContext(req, config)); console.log('SERVICE CREATE ->', values);
const result = await service.create(values, buildContext(req, config));
return handleResultResponse(result, null, null, res, httpStatus.CREATED) return handleResultResponse(result, null, null, res, httpStatus.CREATED)
} catch (error) { } catch (error) {
return handleErrorResponse(_options.MODULE_NAME, 'create', error, res) return handleErrorResponse(_options.MODULE_NAME, 'create', error, res)

View File

@ -77,6 +77,8 @@ module.exports = function (sequelize, DataTypes) {
User.Comments = User.hasMany(models.Comment, { foreignKey: 'userId' }); User.Comments = User.hasMany(models.Comment, { foreignKey: 'userId' });
User.EventsReservations = User.hasMany(models.EventReservation, { foreignKey: 'userId' }); User.EventsReservations = User.hasMany(models.EventReservation, { foreignKey: 'userId' });
User.EventsInscriptions = User.hasMany(models.EventInscription, { foreignKey: 'userId' }); User.EventsInscriptions = User.hasMany(models.EventInscription, { foreignKey: 'userId' });
User.Questions = User.hasMany(models.EventQuestion, { foreignKey: 'userId', as: "questions", required: false, });
// User.InscriptionsValidate = User.hasMany(models.EventIncription, { foreignkey: 'validateUserId'}) // User.InscriptionsValidate = User.hasMany(models.EventIncription, { foreignkey: 'validateUserId'})
//User.Reactions = User.hasMany(models.UserReaction, { foreignKey: 'UserId' }); //User.Reactions = User.hasMany(models.UserReaction, { foreignKey: 'UserId' });
}; };

View File

@ -35,7 +35,6 @@ const getStateCode = (event) => {
}; };
const getStateText = (event) => { const getStateText = (event) => {
var currentDate = moment().utc(), var currentDate = moment().utc(),
initDate = moment.utc(event.ini_date), initDate = moment.utc(event.ini_date),

View File

@ -8,12 +8,11 @@ const PaginateMiddleware = require('../../middlewares/paginate');
const FieldMiddleware = require('../../middlewares/fields'); const FieldMiddleware = require('../../middlewares/fields');
const SortMiddleware = require('../../middlewares/sort'); const SortMiddleware = require('../../middlewares/sort');
//const entityValidation = require('./entity.validations');
const eventController = require('./event.controller'); const eventController = require('./event.controller');
const eventInscriptionController = require('./events_inscriptions.controller'); const eventInscriptionController = require('./events_inscriptions.controller');
const eventReservationController = require('./events_reservations.controller'); const eventReservationController = require('./events_reservations.controller');
const eventQuestionController = require('./events_questions.controller');
const eventValidation = require('./event.validations'); const eventValidation = require('./event.validations');
//const moment = require('moment');
const generalInvalidFields = [ const generalInvalidFields = [
'userId', 'createdAt', 'updatedAt', 'userId', 'createdAt', 'updatedAt',
@ -22,8 +21,6 @@ const generalInvalidFields = [
'multiple_limit', 'marketing_list', 'multiple_limit', 'marketing_list',
]; ];
//moment.locale('es');
routes.get('/events', routes.get('/events',
isLoggedUser, isLoggedUser,
FieldMiddleware.middleware({ FieldMiddleware.middleware({
@ -212,6 +209,13 @@ routes.post('/events/:id/inscriptions',
eventController.createInscription eventController.createInscription
); );
// Hacer una pregunta
routes.post('/events/:eventId/questions',
isLoggedUser,
SchemaValidator(eventValidation.EventQuestionInputType, true),
eventQuestionController.create()
);
// Borrar una inscripción // Borrar una inscripción
routes.delete('/inscriptions/:id', routes.delete('/inscriptions/:id',
isLoggedUser, isLoggedUser,

View File

@ -24,16 +24,15 @@ const ReservationInputType = Joi.object().keys({
end_available_date: Joi.date().optional(), end_available_date: Joi.date().optional(),
}); });
const EventQuestionInputType = Joi.object().keys({
/* //eventId: Joi.string().required(),
const EventsListOutputType = Joi.object().keys({ speakerId: Joi.string().required(),
id: Joi.string().required(), answer: Joi.string().required(),
name: Joi.string().required(),
description: Joi.string().required(),
}); });
*/
module.exports = { module.exports = {
webInscriptionInputType, webInscriptionInputType,
InscriptionInputType InscriptionInputType,
ReservationInputType,
EventQuestionInputType
}; };

View File

@ -0,0 +1,14 @@
'use strict';
const generateControllers = require('../../core/controllers');
const eventQuestionService = require('./events_questions.service');
// Module Name
const MODULE_NAME = '[eventQuestion.controller]';
const controllerOptions = { MODULE_NAME };
const extraControllers = {};
module.exports = generateControllers(eventQuestionService, extraControllers, controllerOptions);

View File

@ -0,0 +1,45 @@
'use strict';
const moment = require('moment');
const Sequelize = require('sequelize');
moment.locale('es');
module.exports = function (sequelize, DataTypes) {
const EventQuestion = sequelize.define('EventQuestion', {
id: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
primaryKey: true,
},
description: {
type: DataTypes.STRING,
},
anonimous: {
type: DataTypes.BOOLEAN,
defaultValue: false,
},
answered: {
type: DataTypes.BOOLEAN,
defaultValue: false,
},
discared: {
type: DataTypes.BOOLEAN,
defaultValue: false,
},
answer: {
type: DataTypes.TEXT,
allowNull: true
},
}, {
tableName: 'events_questions',
freezeTableName: true,
timestamps: true,
});
EventQuestion.associate = function (models) {
EventQuestion.Event = EventQuestion.belongsTo(models.Event, { foreignKey: 'eventId' });
EventQuestion.Speaker = EventQuestion.belongsTo(models.Speaker, { foreignKey: 'speakerId' });
EventQuestion.UserCreate = EventQuestion.belongsTo(models.User, { foreignKey: 'userId' });
};
return EventQuestion;
};

View File

@ -0,0 +1,10 @@
'use strict';
const _ = require('lodash');
const { generateService, parseParamsToFindOptions } = require('../../helpers/service.helper');
const models = require('../../core/models');
const extraMethods = {
};
module.exports = generateService(models.EventQuestion, extraMethods);

View File

@ -38,7 +38,7 @@ module.exports = function (sequelize, DataTypes) {
state: { state: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: false,
defaultValue: 'borrador' defaultValue: 'draft'
}, },
assistants: { assistants: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,

View File

@ -41,7 +41,7 @@ module.exports = function (sequelize, DataTypes) {
state: { state: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: false,
defaultValue: 'borrador' defaultValue: 'draft'
}, },
typeId: { typeId: {
type: DataTypes.UUID, type: DataTypes.UUID,
@ -82,7 +82,7 @@ module.exports = function (sequelize, DataTypes) {
}); });
Speaker.EventDetails = Speaker.hasMany(models.EventDetail, { foreignKey: 'speakerId', as: "eventdetails" }); Speaker.EventDetails = Speaker.hasMany(models.EventDetail, { foreignKey: 'speakerId', as: "eventdetails" });
Speaker.Questions = Speaker.hasMany(models.EventQuestion, { foreignKey: 'speakerId', as: "questions" }); Speaker.Questions = Speaker.hasMany(models.EventQuestion, { foreignKey: 'speakerId', as: "questions", required: false, });
//OJO antes de force comentar //OJO antes de force comentar
// OJO GENERA UN FOREIGN KEY Con eventos y habrá ID de otras entidades que no exitan en la tabla eventos, porque son post o speakers // OJO GENERA UN FOREIGN KEY Con eventos y habrá ID de otras entidades que no exitan en la tabla eventos, porque son post o speakers

View File

@ -369,7 +369,7 @@ CREATE TABLE `events_reservations` (
`init_available_date` datetime DEFAULT NULL, `init_available_date` datetime DEFAULT NULL,
`end_available_date` datetime DEFAULT NULL, `end_available_date` datetime DEFAULT NULL,
`gmt` int(11) DEFAULT '1', `gmt` int(11) DEFAULT '1',
`state` varchar(255) NOT NULL DEFAULT 'borrador', `state` varchar(255) NOT NULL DEFAULT 'draft',
`assistants` int(11) DEFAULT NULL, `assistants` int(11) DEFAULT NULL,
`confirmed` int(11) DEFAULT NULL, `confirmed` int(11) DEFAULT NULL,
`sold_out` tinyint(1) DEFAULT '0', `sold_out` tinyint(1) DEFAULT '0',
@ -602,7 +602,7 @@ CREATE TABLE `speakers` (
`linkedin` varchar(255) DEFAULT NULL, `linkedin` varchar(255) DEFAULT NULL,
`instagram` varchar(255) DEFAULT NULL, `instagram` varchar(255) DEFAULT NULL,
`web` varchar(255) DEFAULT NULL, `web` varchar(255) DEFAULT NULL,
`state` varchar(255) NOT NULL DEFAULT 'borrador', `state` varchar(255) NOT NULL DEFAULT 'draft',
`typeId` char(36) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, `typeId` char(36) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
`createdAt` datetime NOT NULL, `createdAt` datetime NOT NULL,
`updatedAt` datetime NOT NULL, `updatedAt` datetime NOT NULL,