This commit is contained in:
David Arranz 2019-07-14 18:44:59 +02:00
parent ebc09b8079
commit c3d08fb828
11 changed files with 931 additions and 53 deletions

BIN
modelo.mwb Normal file

Binary file not shown.

View File

@ -1,5 +1,6 @@
'use strict'; 'use strict';
const httpStatus = require('http-status');
const generateControllers = require('../../core/controllers'); const generateControllers = require('../../core/controllers');
const eventService = require('./event.service'); const eventService = require('./event.service');
const { extractParamsFromRequest, handleErrorResponse, handleResultResponse } = require('../../helpers/controller.helper'); const { extractParamsFromRequest, handleErrorResponse, handleResultResponse } = require('../../helpers/controller.helper');
@ -45,8 +46,21 @@ const extraControllers = {
const params = extractParamsFromRequest(req, res, {}); const params = extractParamsFromRequest(req, res, {});
console.log('crear inscripcionnnnnnnnnnnnnnnnnnnnnnnnnnnn'); console.log('crear inscripcionnnnnnnnnnnnnnnnnnnnnnnnnnnn');
} return handleResultResponse(result, result.count, params, res);
//findComments: as },
findOne: async (req, res, next) => {
const params = extractParamsFromRequest(req, res, { includeAll: false });
try {
const result = await eventService.fetchOne(params, { user: req.user });
return handleResultResponse(result, null, params, res, (result === null) ? httpStatus.NOT_FOUND : httpStatus.OK);
} catch (error) {
handleErrorResponse(MODULE_NAME, 'findOne', error, res)
}
},
}; };

View File

@ -93,25 +93,26 @@ module.exports = function (sequelize, DataTypes) {
Event.associate = function (models) { Event.associate = function (models) {
Event.OverflowEvent = Event.belongsTo(models.Event, { Event.OverflowEvent = Event.belongsTo(models.Event, {
as: 'EventToEvent', as: 'overflowEvent',
foreignKey: 'overflow_eventId' }); foreignKey: 'overflow_eventId' });
Event.Type = Event.belongsTo(models.EventType, { foreignKey: 'typeId' }); Event.Type = Event.belongsTo(models.EventType, { foreignKey: 'typeId', as: "type" });
Event.UserCreate = Event.belongsTo(models.User, { foreignKey: 'userId' }); Event.UserCreate = Event.belongsTo(models.User, { foreignKey: 'userId', as: "user" });
Event.Venue = Event.belongsTo(models.Venue, { foreignKey: 'venueId' }); Event.Venue = Event.belongsTo(models.Venue, { foreignKey: 'venueId', as: "venue" });
Event.Schedule = Event.hasMany(models.EventSchedule, { foreignKey: 'eventId' }); Event.Schedule = Event.hasMany(models.EventSchedule, { foreignKey: 'eventId', as: "schedule" });
Event.Comments = Event.hasMany(models.Comment, { Event.Comments = Event.hasMany(models.Comment, {
foreignKey: 'entityId', foreignKey: 'entityId',
as: "comments"
}); });
Event.Multimedias = Event.hasMany(models.Multimedia, { Event.Multimedias = Event.hasMany(models.Multimedia, {
foreignKey: 'entityId', foreignKey: 'entityId',
as: { singular: 'Multimedia', plural: 'Multimedias' }}); as: { singular: 'multimedia', plural: 'multimedias' }});
Event.Reservations = Event.hasMany(models.EventReservation, { foreignKey: 'eventId' }); Event.Reservations = Event.hasMany(models.EventReservation, { foreignKey: 'eventId', as: "reservations" });
Event.Inscriptions = Event.hasMany(models.EventInscription, { foreignKey: 'eventId' }); Event.Inscriptions = Event.hasMany(models.EventInscription, { foreignKey: 'eventId', as: "inscriptions" });
Event.Questions = Event.hasMany(models.EventQuestion, { foreignKey: 'eventId' }); Event.Questions = Event.hasMany(models.EventQuestion, { foreignKey: 'eventId', as: "questions" });
}; };
return Event; return Event;

View File

@ -44,13 +44,22 @@ const extraMethods = {
// Incluir // Incluir
findOptions.include.push({ findOptions.include.push({
model: models.EventSchedule, include: {model: models.Speaker, attributes: ['id', 'name', 'description']} model: models.EventSchedule,
as: 'schedule',
include: {
model: models.Speaker,
as: 'speaker',
attributes: ['id', 'name', 'description']
}
}); });
findOptions.include.push({ findOptions.include.push({
model: models.EventType, attributes: ['name', 'tittle'], model: models.EventType,
as: 'type',
attributes: ['name', 'title'],
}); });
findOptions.include.push({ findOptions.include.push({
model: models.Venue, model: models.Venue,
as: 'venue'
}); });
// findOptions.include.push({ // findOptions.include.push({
@ -70,7 +79,47 @@ const extraMethods = {
} catch(error) { } catch(error) {
throw error; throw error;
} }
} },
fetchOne: async (params, context) => {
const findOptions = parseParamsToFindOptions(params);
// Incluir
findOptions.include.push({
model: models.EventSchedule,
as: 'schedule',
include: {
model: models.Speaker,
as: 'speaker',
attributes: ['id', 'name', 'description']
}
});
findOptions.include.push({
model: models.EventType,
as: 'type',
attributes: ['name', 'title'],
});
findOptions.include.push({
model: models.Venue,
as: 'venue'
});
findOptions.include.push({
model: models.EventInscription,
as: 'inscriptions'
});
findOptions.where = Object.assign({},
findOptions.where, {
state: 'publish'
});
return await models.Event.findOne({
where: findOptions.where,
include: findOptions.include
});
},
}; };
module.exports = generateService(models.Event, extraMethods); module.exports = generateService(models.Event, extraMethods);

View File

@ -32,8 +32,8 @@ module.exports = function (sequelize, DataTypes) {
}); });
EventSchedule.associate = function (models) { EventSchedule.associate = function (models) {
EventSchedule.Event = EventSchedule.belongsTo(models.Event, { foreignKey: 'eventId' }); EventSchedule.Event = EventSchedule.belongsTo(models.Event, { foreignKey: 'eventId', as: "event" });
EventSchedule.Speaker = EventSchedule.belongsTo(models.Speaker, {foreignKey: 'speakerId'}); EventSchedule.Speaker = EventSchedule.belongsTo(models.Speaker, {foreignKey: 'speakerId', as: "speaker"});
}; };

View File

@ -10,7 +10,7 @@ module.exports = function (sequelize, DataTypes) {
name: { name: {
type: DataTypes.STRING, type: DataTypes.STRING,
}, },
tittle: { title: {
type: DataTypes.STRING, type: DataTypes.STRING,
}, },
}, { }, {

View File

@ -34,8 +34,8 @@ module.exports = function (sequelize, DataTypes) {
}); });
EventInscription.associate = function (models) { EventInscription.associate = function (models) {
EventInscription.Event = EventInscription.belongsTo(models.Event, { foreignKey: 'eventId' }); EventInscription.Event = EventInscription.belongsTo(models.Event, { foreignKey: 'eventId', as: 'event' });
EventInscription.User = EventInscription.belongsTo(models.User, { foreignKey: 'userId' }); EventInscription.User = EventInscription.belongsTo(models.User, { foreignKey: 'userId', as: 'user' });
EventInscription.UserValidate = EventInscription.belongsTo(models.User, { foreignKey: 'validateUserId' }); EventInscription.UserValidate = EventInscription.belongsTo(models.User, { foreignKey: 'validateUserId' });
}; };

View File

@ -52,7 +52,7 @@ module.exports = function (sequelize, DataTypes) {
}); });
Venue.associate = function (models) { Venue.associate = function (models) {
Venue.Events = Venue.hasMany(models.Event, { foreignKey: 'venueId' }); Venue.Events = Venue.hasMany(models.Event, { foreignKey: 'venueId', as: 'events' });
}; };
return Venue; return Venue;

View File

@ -55,21 +55,28 @@ module.exports = function (sequelize, DataTypes) {
Speaker.associate = function (models) { Speaker.associate = function (models) {
Speaker.SpeakerType = Speaker.belongsTo(models.SpeakerType, { foreignKey: 'typeId' }); Speaker.Type = Speaker.belongsTo(models.SpeakerType, { foreignKey: 'typeId', as: "type" });
Speaker.UserCreate = Speaker.belongsTo(models.User, { foreignKey: 'userId' }); Speaker.UserCreate = Speaker.belongsTo(models.User, { foreignKey: 'userId', as: "user" });
Speaker.Values = Speaker.belongsToMany(models.Value, { Speaker.Values = Speaker.belongsToMany(models.Value, {
through: models.SpeakerValue, through: models.SpeakerValue,
as: 'values',
foreignKey: 'speakerId' foreignKey: 'speakerId'
}); });
Speaker.EventSchedules = Speaker.hasMany(models.EventSchedule, { foreignKey: 'speakerId' }); Speaker.Schedule = Speaker.hasMany(models.EventSchedule, { foreignKey: 'speakerId', as: "schedule" });
Speaker.EventQuestions = Speaker.hasMany(models.EventQuestion, { foreignKey: 'speakerId' }); Speaker.Questions = Speaker.hasMany(models.EventQuestion, { foreignKey: 'speakerId', as: "questions" });
/*
Speaker.Multimedias = Speaker.hasMany(models.Multimedia, {
foreignKey: 'entityId',
as: { singular: 'multimedia', plural: 'multimedias' }
});
/*
Speaker.Multimedias = Speaker.belongsToMany(models.MultimediaFile, { Speaker.Multimedias = Speaker.belongsToMany(models.MultimediaFile, {
through: models.MultimediaSpeaker, through: models.MultimediaSpeaker,
foreignKey: 'speakerId' foreignKey: 'speakerId'
}); });
*/ */
}; };
return Speaker; return Speaker;

File diff suppressed because one or more lines are too long

849
yarn.lock

File diff suppressed because it is too large Load Diff