diff --git a/core/controllers/index.js b/core/controllers/index.js index d8abe51..6697142 100644 --- a/core/controllers/index.js +++ b/core/controllers/index.js @@ -2,7 +2,7 @@ const _find = require('./find'); const httpStatus = require('http-status'); const { extractParamsFromRequest, handleErrorResponse, handleResultResponse } = require('../../helpers/controller.helper'); -function buildContext(req, config ) { +function buildContext(req, config) { return { user: req.user, scopes: [], @@ -51,7 +51,8 @@ const generateControllers = (service, extraControllers = {}, options = {}) => { return async (req, res, next) => { const params = extractParamsFromRequest(req, res, _options.params.findOne); try { - const result = await service.fetchOne(params, buildContext(req, config)); + let result = await service.fetchOne(params, buildContext(req, config)); + result = _options.findOneCallback !== undefined ? _options.findOneCallback(result) : result; return handleResultResponse(result, null, params, res, (result === null) ? httpStatus.NOT_FOUND : httpStatus.OK); } catch (error) { console.log(error); @@ -61,7 +62,7 @@ const generateControllers = (service, extraControllers = {}, options = {}) => { }, count: (config) => { - return async(req, res, next) => { + return async (req, res, next) => { const params = extractParamsFromRequest(req, res, _options.params.count); try { const result = await service.count(params, buildContext(req, config)); @@ -74,16 +75,16 @@ const generateControllers = (service, extraControllers = {}, options = {}) => { create: (config) => { return async (req, res, next) => { - const params = extractParamsFromRequest(req, res, _options.params.count); + const params = extractParamsFromRequest(req, res, _options.params.count); try { //Asignamos el usuario que crea el elemento si viene - req.body.userId = (req.user)? req.user.id : null; + req.body.userId = (req.user) ? req.user.id : null; //Añadimos los parametros que vienen por url y en el body let values = Object.assign({}, params.params, req.body); //Quitamos el campo id si viniera, para que no de un conflicto con el id autoinc if (values.id) delete values.id; - console.log('>> SERVICE CREATE ->', values); - const result = await service.create(values, buildContext(req, config)); + console.log('>> SERVICE CREATE ->', values); + const result = await service.create(values, buildContext(req, config)); return handleResultResponse(result, null, null, res, httpStatus.CREATED) } catch (error) { return handleErrorResponse(_options.MODULE_NAME, 'create', error, res) @@ -93,15 +94,15 @@ const generateControllers = (service, extraControllers = {}, options = {}) => { update: (config) => { return async (req, res, next) => { - try { + try { const params = extractParamsFromRequest(req, res, _options.params.update); - console.log('SERVICE UPDATE ->', params, req.body); + console.log('SERVICE UPDATE ->', params, req.body); const response = await service.update(params, req.body, buildContext(req, config)); // https://sequelize.org/master/class/lib/model.js~Model.html#static-method-update // Update devuelve un array de un elemento con el número de filas afectadas // por la operación. Por comodidad, devuelvo el valor, no el array. - + let result = response[0]; let status = httpStatus.OK; if (result < 1) { @@ -123,7 +124,7 @@ const generateControllers = (service, extraControllers = {}, options = {}) => { return async (req, res, next) => { try { const params = extractParamsFromRequest(req, res, _options.params.delete); - console.log('SERVICE DELETE ->', params); + console.log('SERVICE DELETE ->', params); const result = await service.delete(params, buildContext(req, config)); return handleResultResponse(result, null, req.params, res, httpStatus.NO_CONTENT); } catch (error) { diff --git a/modules/events/event.controller.js b/modules/events/event.controller.js index 33aae41..cfde731 100644 --- a/modules/events/event.controller.js +++ b/modules/events/event.controller.js @@ -28,7 +28,23 @@ const userService = require("../auth/user.service"); // Module Name const MODULE_NAME = "[event.controller]"; -const controllerOptions = { MODULE_NAME }; + +const controllerOptions = { + MODULE_NAME, + findOneCallback: (result) => { + // Si hay inscripciones normales, ponerles el color por defecto 'verde'. + + result.inscriptions = result.inscriptions.map((inscription) => { + const isVirtual = inscription.type === "online" || inscription.type === "online group"; + if ((inscription.reservationId === null) && (!isVirtual)) { + // Inscripción normal + inscription.color = 'green'; + } + return inscription; + }); + return result; + } +}; function generateMemberInscription(user, inscription, reservation) { let memberInscription = null;