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) => {
return async (req, res, next) => {
const params = extractParamsFromRequest(req, res, _options.params.count);
try {
//Asignamos el usuario que crea el elemento
req.body.userId = req.user.id;
console.log('SERVICE CREATE ->', req.body);
const result = await service.create(req.body, buildContext(req, config));
const values = Object.assign({}, params.params, req.body);
console.log('SERVICE CREATE ->', values);
const result = await service.create(values, buildContext(req, config));
return handleResultResponse(result, null, null, res, httpStatus.CREATED)
} catch (error) {
return handleErrorResponse(_options.MODULE_NAME, 'create', error, res)

View File

@ -76,7 +76,9 @@ module.exports = function (sequelize, DataTypes) {
User.Devices = User.hasMany(models.UserDevice, { foreignKey: 'userId' });
User.Comments = User.hasMany(models.Comment, { 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.Reactions = User.hasMany(models.UserReaction, { foreignKey: 'UserId' });
};

View File

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

View File

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

View File

@ -24,16 +24,15 @@ const ReservationInputType = Joi.object().keys({
end_available_date: Joi.date().optional(),
});
/*
const EventsListOutputType = Joi.object().keys({
id: Joi.string().required(),
name: Joi.string().required(),
description: Joi.string().required(),
const EventQuestionInputType = Joi.object().keys({
//eventId: Joi.string().required(),
speakerId: Joi.string().required(),
answer: Joi.string().required(),
});
*/
module.exports = {
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: {
type: DataTypes.STRING,
allowNull: false,
defaultValue: 'borrador'
defaultValue: 'draft'
},
assistants: {
type: DataTypes.INTEGER,

View File

@ -41,7 +41,7 @@ module.exports = function (sequelize, DataTypes) {
state: {
type: DataTypes.STRING,
allowNull: false,
defaultValue: 'borrador'
defaultValue: 'draft'
},
typeId: {
type: DataTypes.UUID,
@ -82,7 +82,7 @@ module.exports = function (sequelize, DataTypes) {
});
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 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,
`end_available_date` datetime DEFAULT NULL,
`gmt` int(11) DEFAULT '1',
`state` varchar(255) NOT NULL DEFAULT 'borrador',
`state` varchar(255) NOT NULL DEFAULT 'draft',
`assistants` int(11) DEFAULT NULL,
`confirmed` int(11) DEFAULT NULL,
`sold_out` tinyint(1) DEFAULT '0',
@ -602,7 +602,7 @@ CREATE TABLE `speakers` (
`linkedin` varchar(255) DEFAULT NULL,
`instagram` 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,
`createdAt` datetime NOT NULL,
`updatedAt` datetime NOT NULL,