diff --git a/modules/events/event.controller.js b/modules/events/event.controller.js index 0f507ea..21ce95c 100644 --- a/modules/events/event.controller.js +++ b/modules/events/event.controller.js @@ -2,13 +2,27 @@ const generateControllers = require('../../core/controllers'); const eventService = require('./event.service'); +const { extractParamsFromRequest, handleErrorResponse, handleResultResponse } = require('../../helpers/controller.helper'); // Module Name const MODULE_NAME = '[event.controller]'; const controllerOptions = { MODULE_NAME }; -const extraControllers = {}; +const extraControllers = { + + findNext: async (req, res, next) => { + const params = extractParamsFromRequest(req, res, {}); + try { + const result = await eventService.fetchNext(null, { user: req.user }); + return handleResultResponse(result, result.count, params, res); + } catch (error) { + handleErrorResponse(MODULE_NAME, 'findNext', error, res); + } + }, + + +}; module.exports = generateControllers(eventService, extraControllers, controllerOptions); diff --git a/modules/events/event.routes.js b/modules/events/event.routes.js index 43bb718..5fd1a57 100644 --- a/modules/events/event.routes.js +++ b/modules/events/event.routes.js @@ -11,6 +11,10 @@ const FieldMiddleware = require('../../middlewares/fields');*/ const eventController = require('./event.controller'); routes.get('/events', eventController.find); +routes.get('/events/next', eventController.findNext); +routes.get('/events/pass', eventController.find); +routes.get('/events/current', eventController.find); + //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 1cdcb49..3119d58 100644 --- a/modules/events/event.service.js +++ b/modules/events/event.service.js @@ -5,6 +5,47 @@ const _ = require('lodash'); const { generateService, parseParamsToFindOptions } = require('../../helpers/service.helper'); const models = require('../../core/models'); -const extraMethods = {}; +const extraMethods = { + fetchNext: async (params, context) => { + var where = []; + var order = []; + var include = []; + + where.push({ + date: { + $gte: moment().add(1, 'days').startOf('day').utc() + } + }); + order.push(['date', 'ASC']); + + // Incluir ponentes + include.push({ + model: models.Speaker, + //as: 'speakers' + }); + + // Incluir tipo de evento + include.push({ + model: models.EventType, + //as: 'type' + }) + + // Solo eventos publicados + where.push({ + state: 'publish' + }); + + try { + const result = await models.Event.findAll({ + where: where, + order: order, + include: include, + }); + return result.toJSON(); + } catch(error) { + throw error; + } + } +}; module.exports = generateService(models.Event, extraMethods); \ No newline at end of file