Merge branch 'master' of wopr.rodax-software.com:lqdvi/app2-api

This commit is contained in:
David Arranz 2019-08-14 21:42:45 +02:00
commit 217d67d810
11 changed files with 98 additions and 34 deletions

View File

@ -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) => {

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -31,6 +31,9 @@ const extraMethods = {
},
afterFetchOne: (result, params, context) => {
console.log('----------------------------------------------');
console.log(result);
if (result)
result = result.toJSON();
return eventComposer(result, context);

View File

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

View File

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

View File

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

View File

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