Crear preguntas a los ponentes
This commit is contained in:
parent
aca096bf3d
commit
3e4e79fa08
@ -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)
|
||||||
|
|||||||
@ -76,7 +76,9 @@ module.exports = function (sequelize, DataTypes) {
|
|||||||
User.Devices = User.hasMany(models.UserDevice, { foreignKey: 'userId' });
|
User.Devices = User.hasMany(models.UserDevice, { foreignKey: 'userId' });
|
||||||
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' });
|
||||||
};
|
};
|
||||||
|
|||||||
@ -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),
|
||||||
|
|||||||
@ -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,
|
||||||
|
|||||||
@ -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
|
||||||
};
|
};
|
||||||
|
|||||||
14
modules/events/events_questions.controller.js
Normal file
14
modules/events/events_questions.controller.js
Normal 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);
|
||||||
|
|
||||||
45
modules/events/events_questions.model.js
Normal file
45
modules/events/events_questions.model.js
Normal 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;
|
||||||
|
};
|
||||||
10
modules/events/events_questions.service.js
Normal file
10
modules/events/events_questions.service.js
Normal 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);
|
||||||
@ -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,
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user