/* global Events Reservations */ 'use strict'; const _ = require('lodash'); const Sequelize = require('sequelize'); const { generateService, parseParamsToFindOptions } = require('../../helpers/service.helper'); const models = require('../../core/models'); const extraMethods = { _getReservaByCode: (eventId, code) => { return models.EventReservation.findOne({ where: { reservation_code: code, eventId: eventId }, include: [{ model: models.Event, }, {model: models.Entity}], }) }, _getPartners: (eventId) => { return models.EventReservation.findAll({ // attributes: [ [Sequelize.fn('DISTINCT', Sequelize.col('events_reservations.entityId'), Sequelize.col('events_reservations.eventId')), 'entities']], // attributes: ['entityId','eventId', 'state'], where: { eventId: eventId }, include: [{ model: models.Entity }], order: [[{ model: models.Entity }, 'name', 'asc']], }) }, _updateConfirmedReservation: (id, confirmed) => { return new Promise(function (resolve, reject) { models.EventReservation.update( { confirmed: confirmed, }, { where: { id: id } }) .then(function (result) { resolve((result[0] === 1)); }) .catch(function (error) { reject(error) }); }); }, _updateSoldOutReservation: (id, sold_out) => { return new Promise(function (resolve, reject) { models.EventReservation.update( { sold_out: sold_out, }, { where: { id: id } }) .then(function (result) { resolve((result[0] === 1)); }) .catch(function (error) { reject(error) }); }); }, }; module.exports = generateService(models.EventReservation, extraMethods);