diff --git a/core/controllers/index.js b/core/controllers/index.js index f07a821..7983fa8 100644 --- a/core/controllers/index.js +++ b/core/controllers/index.js @@ -60,7 +60,6 @@ const generateControllers = (service, extraControllers = {}, options = {}) => { count: (config) => { return async(req, res, next) => { const params = extractParamsFromRequest(req, res, _options.params.count); - try { const result = await service.count(params, buildContext(req, config)); return handleResultResponse(result, null, params, res); diff --git a/helpers/controller.helper.js b/helpers/controller.helper.js index 7fdb288..f37e3fd 100644 --- a/helpers/controller.helper.js +++ b/helpers/controller.helper.js @@ -127,12 +127,12 @@ function extractParamsFromRequest(req, res, extraParams = {}) { function handleErrorResponse(controllerName, methodName, error, res) { console.error(error); const jsonResultFailed = buildErrorResponse(controllerName, methodName, error); - res.status(jsonResultFailed.statusCode).send(jsonResultFailed); + res.send(jsonResultFailed.statusCode).send(jsonResultFailed); } function handleResultResponse(result, totalCount = null, params, res, statusCode = httpStatus.OK) { setPaginationInfo((totalCount) ? totalCount : getTotalCount(result), res); - res.status(statusCode).send(result); + res.send(statusCode).send(result); } diff --git a/modules/events/event.controller.js b/modules/events/event.controller.js index eddd9c5..84e9e41 100644 --- a/modules/events/event.controller.js +++ b/modules/events/event.controller.js @@ -30,9 +30,9 @@ const extraControllers = { try { const result = await eventReservationService._getReservaByCode(eventId, registrationCode); - handleResultResponse(!!result, null, params, res, (result === null) ? httpStatus.NOT_FOUND : httpStatus.OK); + return handleResultResponse(!!result, null, params, res, (result === null) ? httpStatus.NOT_FOUND : httpStatus.OK); } catch(error) { - handleErrorResponse(MODULE_NAME, 'checkReservationCode', error, res) + return handleErrorResponse(MODULE_NAME, 'checkReservationCode', error, res) } }, @@ -52,22 +52,35 @@ const extraControllers = { if (eventId) { try { const result = await eventInscriptionService._getInscriptionByEventAndUser(eventId, userId); - handleResultResponse(result, null, params, res, (result === null) ? httpStatus.NOT_FOUND : httpStatus.OK); + return handleResultResponse(result, null, params, res, (result === null) ? httpStatus.NOT_FOUND : httpStatus.OK); } catch (error) { - handleErrorResponse(MODULE_NAME, 'getInscriptions', error, res) + return handleErrorResponse(MODULE_NAME, 'getInscriptions', error, res) } } else{ try { const result = await eventInscriptionService._getInscriptionsUser(userId); - handleResultResponse(result, null, params, res, (result === null) ? httpStatus.NOT_FOUND : httpStatus.OK); + return handleResultResponse(result, null, params, res, (result === null) ? httpStatus.NOT_FOUND : httpStatus.OK); } catch (error) { - handleErrorResponse(MODULE_NAME, 'getInscriptions', error, res) + return handleErrorResponse(MODULE_NAME, 'getInscriptions', error, res) } } - }, + getInscriptionsOfNextEventsCount: async (req, res, next) => { + const params = extractParamsFromRequest(req, res, {}); + const userId = req.user.id; + + try { + const result = await eventInscriptionService._getInscriptionsOfNextEventsUser(userId); + console.log('bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'); + return handleResultResponse(result, null, params, res, httpStatus.OK); + } catch (error) { + console.log('aaaaaaaaaaaaaaaaaaaaaaaaaaaa'); + return handleErrorResponse(MODULE_NAME, 'getInscriptionsOfNextEventsCount', error, res) + } + }, + getInscription: async (req, res, next) => { const params = extractParamsFromRequest(req, res, {}); const inscriptionId = params.params.id; diff --git a/modules/events/event.routes.js b/modules/events/event.routes.js index 957101f..adfb6a4 100644 --- a/modules/events/event.routes.js +++ b/modules/events/event.routes.js @@ -137,6 +137,17 @@ routes.get('/events/:id/inscriptions', eventController.getInscriptions, ); +// Esto da todas las inscripciones de un usuario +routes.get('/me/inscriptions/count', + isLoggedUser, + /*(req, res, next) => { + req.apicacheGroup = req.user.id; + next(); + }, + cacheSuccesses('1 hour'),*/ + eventController.getInscriptionsOfNextEventsCount, +); + // Esto da todas las inscripciones de un usuario routes.get('/me/inscriptions', isLoggedUser, diff --git a/modules/events/events_inscriptions.model.js b/modules/events/events_inscriptions.model.js index 84d183f..8e7d98c 100644 --- a/modules/events/events_inscriptions.model.js +++ b/modules/events/events_inscriptions.model.js @@ -81,7 +81,8 @@ module.exports = function (sequelize, DataTypes) { include: [{ model: sequelize.models.Event, as: 'event', - attributes: ['id', 'name', 'description', 'campaign_text', 'init_date'], + attributes: ['id', 'name', 'description', 'campaign_text', 'init_date', 'end_date', 'init_available_date', + 'end_available_date', 'stateCode', 'stateText'], include: [{ model: sequelize.models.Venue, as: 'venue', diff --git a/modules/events/events_inscriptions.service.js b/modules/events/events_inscriptions.service.js index 1a25d94..154e0f8 100644 --- a/modules/events/events_inscriptions.service.js +++ b/modules/events/events_inscriptions.service.js @@ -6,6 +6,9 @@ const moment = require('moment'); const { generateService, parseParamsToFindOptions } = require('../../helpers/service.helper'); const models = require('../../core/models'); const marketing = require('../../helpers/mailchimp.helper') +const Sequelize = require('sequelize'); +moment.locale('es'); + const extraMethods = { @@ -37,6 +40,18 @@ const extraMethods = { }) }, + _getInscriptionsOfNextEventsUser: (userId) => { + return models.EventInscription.count({ + include: [{ model: models.Event, + as: 'event', + where: { + end_date: {[Sequelize.Op.gte]: moment().utc()}, + } + }], + where: { userId: userId }, + }); + }, + //Nos devuelve el nĂºmero de inscripciones confirmadas para ese evento sin tener en cuenta reservas _getCountInscriptionsWithoutReservationAndOverflow: (eventId) => { return models.EventInscription.count({