From 1373b3ab05415f5474534af7780b3b4d5edce42d Mon Sep 17 00:00:00 2001 From: david Date: Mon, 29 Jul 2019 18:27:38 +0200 Subject: [PATCH] a --- modules/events/event.model.js | 14 ++++++++++++-- modules/events/event.routes.js | 26 ++++++++++---------------- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/modules/events/event.model.js b/modules/events/event.model.js index 9882544..db0869f 100644 --- a/modules/events/event.model.js +++ b/modules/events/event.model.js @@ -343,11 +343,21 @@ module.exports = function (sequelize, DataTypes) { Event.addScope('CitiesOfEvents', () => { return { - attributes: [[sequelize.fn('DISTINCT', sequelize.col('city')), 'city']] + group: ['city'], + attributes: ['city', [sequelize.fn('COUNT', sequelize.col('id')), 'ediciones']] + } + }); + + Event.addScope('onlyOfCity', (city) => { + return { + where: { + city: { + [Sequelize.Op.eq]: city + } + }, } }); - return Event; }; \ No newline at end of file diff --git a/modules/events/event.routes.js b/modules/events/event.routes.js index c1500ba..957101f 100644 --- a/modules/events/event.routes.js +++ b/modules/events/event.routes.js @@ -19,19 +19,6 @@ const generalInvalidFields = [ 'multiple_limit', 'allow_overflow', 'marketing_list', ]; -//Da todas las ciudades en las que ha habido congresos -routes.get('/cities', cacheSuccesses('24 hours'), -// isLoggedUser, -// FieldMiddleware.middleware({ -// invalidFields: generalInvalidFields -// }), -// PaginateMiddleware.middleware(), -// SortMiddleware.middleware({ default: "-init_date" }), -// eventController.find({ -// scopes: ['defaultScope', 'includeVenue', 'includeMultimedias'], -// }), -); - routes.get('/events', isLoggedUser, FieldMiddleware.middleware({ @@ -39,9 +26,16 @@ routes.get('/events', }), PaginateMiddleware.middleware(), SortMiddleware.middleware({ default: "-init_date" }), - eventController.find({ - scopes: ['defaultScope', 'includeVenue', 'includeMultimedias'], - }), + (req, res, next) => { + if (!req.body.city) + return eventController.find({ + scopes: ['defaultScope', 'includeVenue', 'includeMultimedias', 'includeSpeakers'], + })(req, res, next) + else + return eventController.find({ + scopes: ['defaultScope', 'includeVenue', 'includeMultimedias', 'includeSpeakers', { method: ['onlyOfCity', req.body.city] }] + })(req, res, next); + } ); routes.get('/events/cities',