diff --git a/core/controllers/index.js b/core/controllers/index.js index 910bc62..3548d22 100644 --- a/core/controllers/index.js +++ b/core/controllers/index.js @@ -71,16 +71,30 @@ const generateControllers = (service, extraControllers = {}, options = {}) => { } } }, +/* + create: async (req, res, next) => { + try { + console.log(req.body); + const result = await service.create(req.body, buildContext(req, res)); + return handleResultResponse(result, null, null, res, httpStatus.CREATED) + } catch (error) { + handleErrorResponse(_options.MODULE_NAME, 'create', error, res) + } + }, +*/ create: (config) => { + console.log('CREAAAAAAAAAAAAAAATE'); return async (req, res, next) => { try { + console.log('CREAAAAAAAAAAAAAAATE22222'); const result = await service.create(req.body, buildContext(req, config)); return handleResultResponse(result, null, null, res, httpStatus.CREATED) } catch (error) { + console.log('CREAAAAAAAAAAAAAAAT333333333333333332'); return handleErrorResponse(_options.MODULE_NAME, 'create', error, res) } - } + }; }, update: (config) => { diff --git a/helpers/composes.helper.js b/helpers/composes.helper.js index 417d595..1087113 100644 --- a/helpers/composes.helper.js +++ b/helpers/composes.helper.js @@ -126,17 +126,27 @@ const eventComposer = (event, context) => { }; let speakers = [] - if ((context.scopes) && (context.scopes.includes('includeSpeakers'))) { - speakers = event.details.map((detail) => ({ - order: detail.order, - ...speakerComposer(detail.speaker, context), - })) + let details = [] + if ((context.scopes) && (context.scopes.includes('includeDetails'))) { + + event.details.map((detail) => { + if (detail.type == 'speaker') + speakers.push({ + order: detail.order, + ...speakerComposer(detail.speaker, context), + }); + if (detail.type == 'info') + details.push({ + ...detail, + speaker: undefined, + }); + }); }; return Object.assign({}, event, { multimedias: multimedias }, - { details: undefined }, + { details: details }, { speakers: speakers } ) }; diff --git a/helpers/service.helper.js b/helpers/service.helper.js index d17407f..3f64577 100644 --- a/helpers/service.helper.js +++ b/helpers/service.helper.js @@ -122,7 +122,6 @@ const defaultOptions = {}; const generateService = (model, extraMethods = {}, options = defaultOptions) => { - const defaultService = { fetchAssociation: async(params, context) => { @@ -201,6 +200,7 @@ const generateService = (model, extraMethods = {}, options = defaultOptions) => }, create: async (values, context) => { + console.log('CREAAAAAAAAAAAAAAAAAAAAAAAAAATE44444'); console.log(values); return await model.scope(context.scopes).create(values); }, diff --git a/modules/events/event.controller.js b/modules/events/event.controller.js index 2e57bcc..6b9bf80 100644 --- a/modules/events/event.controller.js +++ b/modules/events/event.controller.js @@ -113,6 +113,19 @@ const extraControllers = { } }, + findPartners: async (req, res, next) => { + const params = extractParamsFromRequest(req, res, {}); + try { + const result = await eventReservationService._getPartners(params.params.id); + console.log('xxxxxx2'); + console.log(result) + return handleResultResponse({ count: result }, null, params, res, httpStatus.OK); + } catch (error) { + console.log('xxxxxxxx3'); + return handleErrorResponse(MODULE_NAME, 'findPartners', error, res) + } + }, + deleteInscription: async (req, res, next) => { const params = extractParamsFromRequest(req, res, {}); diff --git a/modules/events/event.model.js b/modules/events/event.model.js index d172cc8..929431f 100644 --- a/modules/events/event.model.js +++ b/modules/events/event.model.js @@ -234,14 +234,6 @@ module.exports = function (sequelize, DataTypes) { } }); - Event.addScope('includeDetails', () => { - return { - include: [ - { model: sequelize.models.EventDetail, as: 'details' } - ] - } - }); - Event.addScope('includeMultimedias', () => { return { include: [{ @@ -266,14 +258,11 @@ module.exports = function (sequelize, DataTypes) { }); - Event.addScope('includeSpeakers', () => { + Event.addScope('includeDetails', () => { return { include: [{ model: sequelize.models.EventDetail, as: 'details', - where: { - type: 'speaker' - }, required: false, include: [{ model: sequelize.models.Speaker, diff --git a/modules/events/event.routes.js b/modules/events/event.routes.js index 54f66ab..ec1e735 100644 --- a/modules/events/event.routes.js +++ b/modules/events/event.routes.js @@ -10,6 +10,7 @@ const SortMiddleware = require('../../middlewares/sort'); //const entityValidation = require('./entity.validations'); const eventController = require('./event.controller'); +const eventReservationController = require('./events_reservations.controller'); const eventValidation = require('./event.validations'); const generalInvalidFields = [ @@ -29,11 +30,11 @@ routes.get('/events', (req, res, next) => { if (!req.body.city) return eventController.find({ - scopes: ['defaultScope', 'includeVenue', 'includeMultimedias', 'includeSpeakers'], + scopes: ['defaultScope', 'includeVenue', 'includeMultimedias', 'includeDetails'], })(req, res, next) else return eventController.find({ - scopes: ['defaultScope', 'includeVenue', 'includeMultimedias', 'includeSpeakers', { method: ['onlyOfCity', req.body.city] }] + scopes: ['defaultScope', 'includeVenue', 'includeMultimedias', 'includeDetails', { method: ['onlyOfCity', req.body.city] }] })(req, res, next); } ); @@ -70,7 +71,7 @@ routes.get('/events/past', cacheSuccesses('24 hours'), PaginateMiddleware.middleware(), SortMiddleware.middleware({ default: "-init_date" }), eventController.find({ - scopes: ['defaultScope', 'past', 'includeVenue', 'includeMultimedias', 'includeSpeakers'], + scopes: ['defaultScope', 'past', 'includeVenue', 'includeMultimedias', 'includeDetails'], }), ); @@ -82,7 +83,7 @@ routes.get('/events/today', PaginateMiddleware.middleware(), SortMiddleware.middleware({ default: "-init_date" }), eventController.find({ - scopes: ['defaultScope', 'today', 'includeVenue', 'includeMultimedias', 'includeSpeakers'], + scopes: ['defaultScope', 'today', 'includeVenue', 'includeMultimedias', 'includeDetails'], }), ); @@ -94,7 +95,7 @@ routes.get('/events/current', PaginateMiddleware.middleware(), SortMiddleware.middleware({ default: "-init_date" }), eventController.find({ - scopes: ['defaultScope', 'current', 'includeVenue', 'includeMultimedias', 'includeSpeakers'], + scopes: ['defaultScope', 'current', 'includeVenue', 'includeMultimedias', 'includeDetails'], }), ); @@ -105,7 +106,7 @@ routes.get('/events/:id', }), (req, res, next) => { return eventController.findOne({ - scopes: ['defaultScope', 'includeVenue', 'includeMultimedias', 'includeSpeakers', { method: ['includeInscription', req.user.id] }] + scopes: ['defaultScope', 'includeVenue', 'includeMultimedias', 'includeDetails', { method: ['includeInscription', req.user.id] }] })(req, res, next) } ); @@ -265,15 +266,15 @@ routes.get('/tickets/:id/', routes.get('/admin/events', isAdministratorUser, PaginateMiddleware.middleware(), - SortMiddleware.middleware({ default: "-init_date" }), + SortMiddleware.middleware({ default: "-init_date" }), (req, res, next) => { if (!req.body.city) return eventController.find({ - scopes: ['defaultScope', 'includeVenue', 'includeMultimedias', 'includeSpeakers'], + scopes: ['defaultScope', 'includeVenue', 'includeMultimedias', 'includeDetails'], })(req, res, next) else return eventController.find({ - scopes: ['defaultScope', 'includeVenue', 'includeMultimedias', 'includeSpeakers', { method: ['onlyOfCity', req.body.city] }] + scopes: ['defaultScope', 'includeVenue', 'includeMultimedias', 'includeDetails', { method: ['onlyOfCity', req.body.city] }] })(req, res, next); } ); @@ -283,7 +284,7 @@ routes.get('/admin/events/next', PaginateMiddleware.middleware(), SortMiddleware.middleware({ default: "init_available_date" }), eventController.find({ - scopes: ['defaultScope', 'next', 'includeVenue', 'includeMultimedias', 'includeSpeakers'], + scopes: ['defaultScope', 'next', 'includeVenue', 'includeMultimedias', 'includeDetails'], }), ); @@ -292,7 +293,7 @@ routes.get('/admin/events/past', PaginateMiddleware.middleware(), SortMiddleware.middleware({ default: "-init_date" }), eventController.find({ - scopes: ['defaultScope', 'past', 'includeVenue', 'includeMultimedias', 'includeSpeakers'], + scopes: ['defaultScope', 'past', 'includeVenue', 'includeMultimedias', 'includeDetails'], }), ); @@ -301,7 +302,7 @@ routes.get('/admin/events/current', PaginateMiddleware.middleware(), SortMiddleware.middleware({ default: "-init_date" }), eventController.find({ - scopes: ['defaultScope', 'current', 'includeVenue', 'includeMultimedias', 'includeSpeakers'], + scopes: ['defaultScope', 'current', 'includeVenue', 'includeMultimedias', 'includeDetails'], }), ); @@ -309,11 +310,21 @@ routes.get('/admin/events/:id', isAdministratorUser, (req, res, next) => { return eventController.findOne({ - scopes: ['defaultScope', 'includeVenue', 'includeMultimedias', 'includeSpeakers'] + scopes: ['defaultScope', 'includeVenue', 'includeMultimedias', 'includeDetails'] })(req, res, next) } ); +routes.get('/admin/events/:id/partners', + isAdministratorUser, + eventController.findPartners, +); + + +routes.post('/admin/reservations', +// isAdministratorUser, +// SchemaValidator(VenueValidation.VenueInputType, true), + eventReservationController.create); /*// Un ponente routes.get('/admin/speakers/:id', diff --git a/modules/events/event.service.js b/modules/events/event.service.js index d09ab2c..aa74a99 100644 --- a/modules/events/event.service.js +++ b/modules/events/event.service.js @@ -31,6 +31,9 @@ const extraMethods = { }, afterFetchOne: (result, params, context) => { + console.log('----------------------------------------------'); + console.log(result); + if (result) result = result.toJSON(); return eventComposer(result, context); diff --git a/modules/events/events_reservations.controller.js b/modules/events/events_reservations.controller.js new file mode 100644 index 0000000..1b7b408 --- /dev/null +++ b/modules/events/events_reservations.controller.js @@ -0,0 +1,14 @@ +'use strict'; + +const generateControllers = require('../../core/controllers'); +const eventReservationService = require('./events_reservations.service'); + + +// Module Name +const MODULE_NAME = '[eventReservation.controller]'; + +const controllerOptions = { MODULE_NAME }; +const extraControllers = {}; + +module.exports = generateControllers(eventReservationService, extraControllers, controllerOptions); + diff --git a/modules/events/events_reservations.service.js b/modules/events/events_reservations.service.js index af9d820..c4812a8 100644 --- a/modules/events/events_reservations.service.js +++ b/modules/events/events_reservations.service.js @@ -2,6 +2,7 @@ 'use strict'; const _ = require('lodash'); +const Sequelize = require('sequelize'); const { generateService, parseParamsToFindOptions } = require('../../helpers/service.helper'); const models = require('../../core/models'); @@ -16,6 +17,14 @@ const extraMethods = { }) }, + _getPartners: (eventId) => { + return models.EventReservation.findAll({ + attributes: [ [Sequelize.fn('DISTINCT', Sequelize.col('events_reservations.entityId'), Sequelize.col('events_reservations.eventId')), 'entities']], + where: { eventId: eventId }, + include: [{ model: models.Entity }], + }) + }, + _updateConfirmedReservation: (id, confirmed) => { return new Promise(function (resolve, reject) { models.EventReservation.update( diff --git a/modules/venues/venue.routes.js b/modules/venues/venue.routes.js index b89d1cc..2aa41b7 100644 --- a/modules/venues/venue.routes.js +++ b/modules/venues/venue.routes.js @@ -32,6 +32,7 @@ routes.get('/venues/:id/events', */ routes.post('/venues/', SchemaValidator(VenueValidation.VenueInputType, true), venueController.create); +routes.get('/venues/count' , venueController.count); //routes.put('/venues/:id', isAdministratorUser, venueController.update); //routes.delete('/venues/:id', isAdministratorUser, venueController.delete); diff --git a/modules/venues/venue.service.js b/modules/venues/venue.service.js index a35dd02..d9b99cc 100644 --- a/modules/venues/venue.service.js +++ b/modules/venues/venue.service.js @@ -1,7 +1,7 @@ /* global Venue */ 'use strict'; -const _ = require('lodash'); +const _ = require('lodash'); const { generateService, parseParamsToFindOptions } = require('../../helpers/service.helper'); const models = require('../../core/models');