This commit is contained in:
David Arranz 2019-07-30 18:24:06 +02:00
parent 386c948798
commit 826cdbe77b
6 changed files with 50 additions and 11 deletions

View File

@ -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);

View File

@ -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);
}

View File

@ -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;

View File

@ -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,

View File

@ -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',

View File

@ -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({