diff --git a/helpers/cdn.helper.js b/helpers/cdn.helper.js index 5d09d3c..492954d 100644 --- a/helpers/cdn.helper.js +++ b/helpers/cdn.helper.js @@ -13,7 +13,8 @@ const CDN_PATHS = { PROFILE: "profile/", SPEAKERS: "speakers/", WALLPAPERS: "wallpapers/", - XLSX: "xlsx/", + XLSX: "xlsx/", + PARTNERS: "partners/", }; const dummyMedia = encodeURI(`${assetsUrl}/defaultProfile.png`); @@ -39,6 +40,9 @@ const getCDNMediaUrl = (mediaUri) => { const getCDNCityMediaUrl = (cityName) => encodeURI(`${assetsUrl}/${CDN_PATHS.CITIES}/${cityName}.jpg`); +const getCDNCurrentPartnersJSON = encodeURI(`${assetsUrl}/${CDN_PATHS.PARTNERS}partners_current.json`); +const getCDNPastPartnersJSON = encodeURI(`${assetsUrl}/${CDN_PATHS.PARTNERS}partners_past.json`); + const getCDNPath = (type = '') => { var cdnPath = ''; switch (type) { @@ -56,6 +60,10 @@ const getCDNPath = (type = '') => { case 'xlsx': cdnPath = CDN_PATHS.XLSX; break; + + case 'partners': + cdnPath = CDN_PATHS.PARTNERS; + break; default: var _date = new Date(); @@ -94,5 +102,7 @@ module.exports = { getCDNMediaUrl, getCDNPath, getCDNFilenameWithPath, + getCDNCurrentPartnersJSON, + getCDNPastPartnersJSON, getUniqueName } \ No newline at end of file diff --git a/modules/auth/user.model.js b/modules/auth/user.model.js index efd0a3c..1da9242 100644 --- a/modules/auth/user.model.js +++ b/modules/auth/user.model.js @@ -11,8 +11,8 @@ module.exports = function (sequelize, DataTypes) { }, phone: { type: DataTypes.STRING, - unique: true -// allowNull: false, //Tiene que poderse dar de alta usuarios solo con el correo electronico para que siga funcionando las invitaciones por web como hasta ahora + unique: true, + allowNull: true, //Tiene que poderse dar de alta usuarios solo con el correo electronico para que siga funcionando las invitaciones por web como hasta ahora }, email: { type: DataTypes.STRING, diff --git a/modules/events/event.model.js b/modules/events/event.model.js index 93a4ee2..33bff1e 100644 --- a/modules/events/event.model.js +++ b/modules/events/event.model.js @@ -4,26 +4,26 @@ const Sequelize = require('sequelize'); moment.locale('es'); const getStateCode = (event) => { - var currentDate = moment().utc(), - initDate = moment.utc(event.ini_date), - endDate = moment.utc(event.end_date), - init_availableDate = moment.utc(event.init_available_date), - end_availableDate = moment.utc(event.end_available_date); + var currentDate = moment(), + initDate = moment(event.init_date), + endDate = moment(event.end_date), + init_availableDate = moment(event.init_available_date), + end_availableDate = moment(event.end_available_date); - if (moment(currentDate).isBetween(initDate, endDate)) { + if (currentDate.isBetween(initDate, endDate)) { return 'current_event'; } else { - if (moment(endDate).isBefore(currentDate)) { + if (endDate.isBefore(currentDate)) { return 'closed_event'; } else { - if (moment(currentDate).isBefore(init_availableDate)){ + if (currentDate.isBefore(init_availableDate)){ return 'future_registrations' } else { - if (moment(currentDate).isBetween(init_availableDate, end_availableDate)) { + if (currentDate.isBetween(init_availableDate, end_availableDate)) { return (event.sold_out == 1) ? 'waitinglist_open' : 'registrations_open'; } else { - if (moment(currentDate).isAfter(end_availableDate)) + if (currentDate.isAfter(end_availableDate)) return 'closed_registrations' else return 'N/A'; @@ -34,28 +34,27 @@ const getStateCode = (event) => { }; }; - const getStateText = (event) => { - var currentDate = moment().utc(), - initDate = moment.utc(event.ini_date), - endDate = moment.utc(event.end_date), - init_availableDate = moment.utc(event.init_available_date), - end_availableDate = moment.utc(event.end_available_date); + var currentDate = moment(), + initDate = moment(event.init_date), + endDate = moment(event.end_date), + init_availableDate = moment(event.init_available_date), + end_availableDate = moment(event.end_available_date); - if (moment(currentDate).isBetween(initDate, endDate)) { + if (currentDate.isBetween(initDate, endDate)) { return 'Congreso en curso'; } else { - if (moment(endDate).isBefore(currentDate)) { + if (endDate.isBefore(currentDate)) { return 'Congreso finalizado'; } else { - if (moment(currentDate).isBefore(init_availableDate)) { - return 'Inscripciones a partir del ' + moment(init_availableDate).format('D [de] MMMM'); + if (currentDate.isBefore(init_availableDate)) { + return 'Inscripciones a partir del ' + init_availableDate.format('D [de] MMMM'); } else { - if (moment(currentDate).isBetween(init_availableDate, end_availableDate)) { + if (currentDate.isBetween(init_availableDate, end_availableDate)) { return (event.sold_out == 1) ? 'Inscripciones abiertas a lista de espera' : 'Inscripciones abiertas'; } else { - if (moment(currentDate).isAfter(end_availableDate)) + if (currentDate.isAfter(end_availableDate)) return 'Inscripciones cerradas' else return 'N/A'; @@ -317,7 +316,7 @@ module.exports = function (sequelize, DataTypes) { Event.addScope('next', { where: { init_date: { - [Sequelize.Op.gte]: moment().add(1, 'days').startOf('day').utc() + [Sequelize.Op.gte]: moment().add(1, 'days').startOf('day').format('YYYY-MM-DD HH:mm:ss') } }, }); @@ -325,8 +324,8 @@ module.exports = function (sequelize, DataTypes) { Event.addScope('today', { where: { init_date: { - [Sequelize.Op.gte]: moment().startOf('day'), - [Sequelize.Op.lt]: moment().add(1, 'days').startOf('day'), + [Sequelize.Op.gte]: moment().startOf('day').format('YYYY-MM-DD HH:mm:ss'), + [Sequelize.Op.lt]: moment().add(1, 'days').startOf('day').format('YYYY-MM-DD HH:mm:ss'), } } }); @@ -334,18 +333,36 @@ module.exports = function (sequelize, DataTypes) { Event.addScope('current', { where: { init_date: { - [Sequelize.Op.lte]: moment().utc(), + [Sequelize.Op.lte]: moment().format('YYYY-MM-DD HH:mm:ss'), }, end_date:{ - [Sequelize.Op.gt]: moment().utc(), + [Sequelize.Op.gt]: moment().format('YYYY-MM-DD HH:mm:ss'), }, } }); + Event.addScope('tomorrow', { + where: { + init_date: { + [Sequelize.Op.gte]: moment().add(1, 'days').startOf('day').format('YYYY-MM-DD HH:mm:ss'), + [Sequelize.Op.lt]: moment().add(2, 'days').startOf('day').format('YYYY-MM-DD HH:mm:ss'), + } + } + }); + + Event.addScope('yesterday', { + where: { + init_date: { + [Sequelize.Op.gte]: moment().add(-1, 'days').startOf('day').format('YYYY-MM-DD HH:mm:ss'), + [Sequelize.Op.lt]: moment().add('day').startOf('day').format('YYYY-MM-DD HH:mm:ss'), + } + } + }); + Event.addScope('past', { where: { init_date: { - [Sequelize.Op.lt]: moment().startOf('day').utc() + [Sequelize.Op.lt]: moment().startOf('day').format('YYYY-MM-DD HH:mm:ss') } } }); @@ -353,10 +370,10 @@ module.exports = function (sequelize, DataTypes) { Event.addScope('withOpenInscriptions', { where: { init_available_date: { - [Sequelize.Op.lte]: moment().utc() + [Sequelize.Op.lte]: moment().format('YYYY-MM-DD HH:mm:ss') }, end_available_date: { - [Sequelize.Op.gt]: moment().utc() + [Sequelize.Op.gt]: moment().format('YYYY-MM-DD HH:mm:ss') } }, }); diff --git a/modules/events/event.routes.js b/modules/events/event.routes.js index ac83964..39157ad 100644 --- a/modules/events/event.routes.js +++ b/modules/events/event.routes.js @@ -57,7 +57,7 @@ routes.get('/events/next', PaginateMiddleware.middleware(), SortMiddleware.middleware({ default: "init_date" }), (req, res, next) => { - // console.log(moment().add(1, 'days').startOf('day').utc()); + // console.log(moment().add(1, 'days').startOf('day').format('YYYY-MM-DD HH:mm:ss')); return eventController.find({ scopes: ['defaultScope', 'next', 'includeVenue', 'includeMultimedias', { method: ['includeInscription', req.user.id] }], })(req, res, next) @@ -78,6 +78,19 @@ routes.get('/events/past', }), ); +routes.get('/events/yesterday', + isLoggedUser, + FieldMiddleware.middleware({ + invalidFields: generalInvalidFields + }), + PaginateMiddleware.middleware(), + SortMiddleware.middleware({ default: "-init_date" }), + eventController.find({ + scopes: ['defaultScope', 'yesterday', 'includeVenue', 'includeMultimedias', 'includeDetails'], + }), +); + + routes.get('/events/today', isLoggedUser, FieldMiddleware.middleware({ @@ -90,6 +103,18 @@ routes.get('/events/today', }), ); +routes.get('/events/tomorrow', + isLoggedUser, + FieldMiddleware.middleware({ + invalidFields: generalInvalidFields + }), + PaginateMiddleware.middleware(), + SortMiddleware.middleware({ default: "-init_date" }), + eventController.find({ + scopes: ['defaultScope', 'tomorrow', 'includeVenue', 'includeMultimedias', 'includeDetails'], + }), +); + routes.get('/events/current', isLoggedUser, FieldMiddleware.middleware({ diff --git a/modules/events/event.validations.js b/modules/events/event.validations.js index 8008488..9144943 100644 --- a/modules/events/event.validations.js +++ b/modules/events/event.validations.js @@ -27,7 +27,7 @@ const ReservationInputType = Joi.object().keys({ const EventQuestionInputType = Joi.object().keys({ //eventId: Joi.string().required(), speakerId: Joi.string().required(), - answer: Joi.string().required(), + question: Joi.string().required(), }); module.exports = { diff --git a/modules/events/events_questions.model.js b/modules/events/events_questions.model.js index 075df12..82e98e3 100644 --- a/modules/events/events_questions.model.js +++ b/modules/events/events_questions.model.js @@ -10,8 +10,12 @@ module.exports = function (sequelize, DataTypes) { defaultValue: DataTypes.UUIDV4, primaryKey: true, }, - description: { - type: DataTypes.STRING, + question: { + type: DataTypes.TEXT, + allowNull: true + }, + answer: { + type: DataTypes.TEXT, }, anonimous: { type: DataTypes.BOOLEAN, @@ -25,10 +29,6 @@ module.exports = function (sequelize, DataTypes) { type: DataTypes.BOOLEAN, defaultValue: false, }, - answer: { - type: DataTypes.TEXT, - allowNull: true - }, }, { tableName: 'events_questions', freezeTableName: true,