From 0c59d2a2fcbbdbdbb79416b058ce75cc5fdebf53 Mon Sep 17 00:00:00 2001 From: david Date: Tue, 20 Aug 2019 17:37:53 +0200 Subject: [PATCH] a --- modules/events/event.controller.js | 19 +++++++------- modules/events/event.model.js | 19 ++++++++++---- modules/events/event.routes.js | 26 ++++++++----------- modules/events/events_inscriptions.service.js | 8 ++++++ 4 files changed, 43 insertions(+), 29 deletions(-) diff --git a/modules/events/event.controller.js b/modules/events/event.controller.js index 0575cb8..73965e7 100644 --- a/modules/events/event.controller.js +++ b/modules/events/event.controller.js @@ -40,21 +40,22 @@ const extraControllers = { }, //Funcion que devuelve: - //1. Todas las inscripciones de un evento, cuando el usuario es administrador (SIN HACER) + //1. Todas las inscripciones de un evento, cuando el usuario es administrador //2. Todas las inscripciones de un usuario, cuando no nos llega ningun param con id getInscriptions: async (req, res, next) => { const params = extractParamsFromRequest(req, res, {}); const eventId = params.params.id; const userId = req.user.id; + var result = null; - //req.user.rol Administrador ...... - - //req.user.rol normal ...... - +console.log(params); if (eventId) { try { - const result = await eventInscriptionService._getInscriptionByEventAndUser(eventId, userId); + if (req.user.level = 8) + result = await eventInscriptionService._getInscriptionByEvent(eventId) + else + result = await eventInscriptionService._getInscriptionByEventAndUser(eventId, userId); return handleResultResponse(result, null, params, res, (result === null) ? httpStatus.NOT_FOUND : httpStatus.OK); } catch (error) { return handleErrorResponse(MODULE_NAME, 'getInscriptions', error, res) @@ -62,7 +63,7 @@ const extraControllers = { } else{ try { - const result = await eventInscriptionService._getInscriptionsUser(userId); + result = await eventInscriptionService._getInscriptionsUser(userId); return handleResultResponse(result, null, params, res, (result === null) ? httpStatus.NOT_FOUND : httpStatus.OK); } catch (error) { return handleErrorResponse(MODULE_NAME, 'getInscriptions', error, res) @@ -464,10 +465,10 @@ console.log(mailOptions); getReservationsExcel: async (req, res, next) => { console.log('exxxxxxxxxxxxxxxcel'); const params = extractParamsFromRequest(req, res, {}); - const inscriptionId = params.params.id; + const eventId = params.params.id; const userId = req.user.id; - const inscription = await eventReservationService._getReservationsExcel(req.user, params.params.id, null, function(result, status){ + const inscription = await eventReservationService._getReservationsExcel(req.user, eventId, null, function(result, status){ if (result.messenger.code == "S99001") { console.log(result); res.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); diff --git a/modules/events/event.model.js b/modules/events/event.model.js index 9cc8ce2..07b880d 100644 --- a/modules/events/event.model.js +++ b/modules/events/event.model.js @@ -196,11 +196,13 @@ module.exports = function (sequelize, DataTypes) { }); Event.associate = function (models) { -// Event.OverflowEvent = Event.belongsTo(models.Event, { -// as: 'overflowEvent', -// foreignKey: 'overflow_eventId', -// required: false }); - Event.Type = Event.belongsTo(models.EventType, { foreignKey: 'typeId', as: "type" }); + + Event.OverflowEvent = Event.belongsTo(models.Event, { + as: 'overflowEvent', + foreignKey: 'overflow_eventId', + required: false }); + + Event.Type = Event.belongsTo(models.EventType, { foreignKey: 'typeId', as: "type" }); Event.UserCreate = Event.belongsTo(models.User, { foreignKey: 'userId', as: "user" }); Event.Venue = Event.belongsTo(models.Venue, { foreignKey: 'venueId', as: "venue", required: false, @@ -270,6 +272,13 @@ module.exports = function (sequelize, DataTypes) { } }); + Event.addScope('includeOverflowEvent', () => { + return { + include: [ + { model: sequelize.models.Event, as: 'overflowEvent', required: false} + ] + } + }); Event.addScope('includeDetails', () => { return { diff --git a/modules/events/event.routes.js b/modules/events/event.routes.js index cdcb9a9..eed2d7c 100644 --- a/modules/events/event.routes.js +++ b/modules/events/event.routes.js @@ -134,14 +134,14 @@ routes.get('/events/:id/multimedias', eventController.find, ); - // Inscripciones -// Esto da las inscripciones (1) de un usuario pero si el usuario fuera el administrador podría todas las inscripciones de un evento +// Esto da las inscripciones de un usuario routes.get('/events/:id/inscriptions', - isLoggedUser, + isLoggedUser, eventController.getInscriptions, ); + // Esto da todas las inscripciones de un usuario routes.get('/me/inscriptions/count', isLoggedUser, @@ -262,6 +262,13 @@ routes.get('/tickets/:id/', * ADMINISTRACIÓN ********************************************************************************************************* */ +// Inscripciones +// Esto da las inscripciones de un evento +routes.get('/admin/events/:id/inscriptions', + isAdministratorUser, + PaginateMiddleware.middleware(), + eventController.getInscriptions, +); // Todos los ponentes routes.get('/admin/events', @@ -311,7 +318,7 @@ routes.get('/admin/events/:id', isAdministratorUser, (req, res, next) => { return eventController.findOne({ - scopes: ['defaultScope', 'includeVenue', 'includeMultimedias', 'includeDetails'] + scopes: ['defaultScope', 'includeVenue', 'includeMultimedias', 'includeOverflowEvent', 'includeDetails'] })(req, res, next) } ); @@ -362,15 +369,4 @@ routes.delete('/admin/reservations/:id', eventReservationController.delete() ); -routes.get('/inscriptions', - isAdministratorUser, - //SchemaValidator(eventValidation.ReservationInputType, true), - (req, res, next) => { - return eventInscriptionController.find({ - scopes: ['defaultScope'] - })(req, res, next) - }, - -); - module.exports = routes; \ No newline at end of file diff --git a/modules/events/events_inscriptions.service.js b/modules/events/events_inscriptions.service.js index 6b9047b..27b1b0e 100644 --- a/modules/events/events_inscriptions.service.js +++ b/modules/events/events_inscriptions.service.js @@ -51,6 +51,14 @@ const extraMethods = { }) }, + _getInscriptionByEvent: (eventId) => { + return models.EventInscription.scope('defaultScope').findAll({ + where: { + eventId: eventId, + }, + }) + }, + _getInscriptionsUser: (userId) => { return models.EventInscription.scope('includeEventAndVenue').findAll({ attributes: {