diff --git a/helpers/service.helper.js b/helpers/service.helper.js index b9d29b8..891c8fa 100644 --- a/helpers/service.helper.js +++ b/helpers/service.helper.js @@ -80,11 +80,14 @@ const parseParamsToFindOptions = (params) => { result.query = params.query } - // Where + // Params if (params.params) { - result.where = params.params + result.params = params.params } + // Where + result.where = []; + // Paginate if (params.paginate) { result.offset = params.paginate.limit * (params.paginate.page - 1); @@ -92,8 +95,8 @@ const parseParamsToFindOptions = (params) => { } // Order + result.order = []; if (params.sort) { - result.order = []; Object.keys(params.sort).forEach(key => { let dir = params.sort[key] ? 'ASC' : 'DESC'; result.order.push([key, dir]) diff --git a/modules/events/event.controller.js b/modules/events/event.controller.js index 21ce95c..682a005 100644 --- a/modules/events/event.controller.js +++ b/modules/events/event.controller.js @@ -14,7 +14,7 @@ const extraControllers = { findNext: async (req, res, next) => { const params = extractParamsFromRequest(req, res, {}); try { - const result = await eventService.fetchNext(null, { user: req.user }); + const result = await eventService.fetchNext(params, { user: req.user }); return handleResultResponse(result, result.count, params, res); } catch (error) { handleErrorResponse(MODULE_NAME, 'findNext', error, res); diff --git a/modules/events/event.routes.js b/modules/events/event.routes.js index 1f06bbd..a464bdd 100644 --- a/modules/events/event.routes.js +++ b/modules/events/event.routes.js @@ -3,9 +3,9 @@ const routes = require('express').Router(); const { isAdministratorUser, isLoggedUser } = require('../../middlewares/accessValidator'); const SchemaValidator = require('../../middlewares/schemaValidator'); -/*const PaginateMiddleware = require('../../middlewares/paginate'); -const FieldMiddleware = require('../../middlewares/fields');*/ -//const SortMiddleware = require('../../middlewares/sort'); +const PaginateMiddleware = require('../../middlewares/paginate'); +const FieldMiddleware = require('../../middlewares/fields'); +const SortMiddleware = require('../../middlewares/sort'); //const entityValidation = require('./entity.validations'); const eventController = require('./event.controller'); @@ -15,35 +15,40 @@ routes.get('/events', /*FieldMiddleware.middleware({ invalidFields: ['user', 'createdAt'] }),*/ - //PaginateMiddleware.middleware(), - //SortMiddleware.middleware({ default: "date" }), + PaginateMiddleware.middleware(), + SortMiddleware.middleware({ default: "-date" }), eventController.find ); routes.get('/events/next', //isLoggedUser, + FieldMiddleware.middleware({ + invalidFields: ['user', 'createdAt'] + }), + PaginateMiddleware.middleware(), + SortMiddleware.middleware({ default: "init_avalible_date" }), eventController.findNext ); routes.get('/events/pass', //isLoggedUser, - eventController.findPass + eventController.find ); routes.get('/events/current', //isLoggedUser, - eventController.findCurrent + eventController.find ); -routes.get('/events/:id', - // isLoggedUser, - /*FieldMiddleware.middleware({ +/*routes.get('/events/:id', + isLoggedUser, + FieldMiddleware.middleware({ invalidFields: ['updatedAt', 'createdAt'] - }),*/ + }), eventController.finOne -); +);*/ //routes.get('/venues', isLoggedUser, SortMiddleware.middleware({ default: "name" }), venueController.find); //routes.get('/venues/:id', isLoggedUser, venueController.findOne); diff --git a/modules/events/event.service.js b/modules/events/event.service.js index ea07b45..73840f4 100644 --- a/modules/events/event.service.js +++ b/modules/events/event.service.js @@ -4,45 +4,41 @@ const _ = require('lodash'); const moment = require('moment'); const { generateService, parseParamsToFindOptions } = require('../../helpers/service.helper'); +const Sequelize = require('sequelize'); const models = require('../../core/models'); const extraMethods = { fetchNext: async (params, context) => { - var where = []; - var order = []; - var include = []; + const findOptions = parseParamsToFindOptions(params); - where.push({ + findOptions.where.push({ date: { - $gte: moment().add(1, 'days').startOf('day').utc() + [Sequelize.Op.gte]: moment().add(1, 'days').startOf('day').utc() } }); - order.push(['date', 'ASC']); - // Incluir ponentes - include.push({ - model: models.Speaker, - //as: 'speakers' + + // Incluir + findOptions.include.push({ + model: models.EventSchedule, + }); + findOptions.include.push({ + model: models.EventType, + }); + findOptions.include.push({ + model: models.Venue, }); - // Incluir tipo de evento - include.push({ - model: models.EventType, - //as: 'type' - }) // Solo eventos publicados - where.push({ + findOptions.where.push({ state: 'publish' }); + + try { - const result = await models.Event.findAll({ - where: where, - order: order, - include: include, - }); - return result.toJSON(); + return await models.Event.findAll(findOptions); } catch(error) { throw error; } diff --git a/modules/events/venue.routes.js b/modules/events/venue.routes.js index 8db7d7d..601a9a4 100644 --- a/modules/events/venue.routes.js +++ b/modules/events/venue.routes.js @@ -10,6 +10,8 @@ const FieldMiddleware = require('../../middlewares/fields');*/ const VenueValidation = require('./venue.validations'); const venueController = require('./venue.controller'); + + //routes.get('/venues', true, SortMiddleware.middleware({ default: "name" }), venueController.find); //routes.get('/venues', isLoggedUser, SortMiddleware.middleware({ default: "name" }), venueController.find); //routes.get('/venues/:id', isLoggedUser, venueController.findOne); diff --git a/server.js b/server.js index 0fd316a..0345504 100644 --- a/server.js +++ b/server.js @@ -49,7 +49,7 @@ server.on('error', err => { }); try { - models.sequelize.sync({ force: true }).then(() => { + models.sequelize.sync({ force: false }).then(() => { // Launch server. server.listen(currentState.port, (err) => { if (err) {