This commit is contained in:
David Arranz 2019-09-27 12:22:09 +02:00
parent 3cf312d777
commit 0e2c17967e
6 changed files with 93 additions and 41 deletions

View File

@ -14,6 +14,7 @@ const CDN_PATHS = {
SPEAKERS: "speakers/", SPEAKERS: "speakers/",
WALLPAPERS: "wallpapers/", WALLPAPERS: "wallpapers/",
XLSX: "xlsx/", XLSX: "xlsx/",
PARTNERS: "partners/",
}; };
const dummyMedia = encodeURI(`${assetsUrl}/defaultProfile.png`); const dummyMedia = encodeURI(`${assetsUrl}/defaultProfile.png`);
@ -39,6 +40,9 @@ const getCDNMediaUrl = (mediaUri) => {
const getCDNCityMediaUrl = (cityName) => encodeURI(`${assetsUrl}/${CDN_PATHS.CITIES}/${cityName}.jpg`); 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 = '') => { const getCDNPath = (type = '') => {
var cdnPath = ''; var cdnPath = '';
switch (type) { switch (type) {
@ -57,6 +61,10 @@ const getCDNPath = (type = '') => {
cdnPath = CDN_PATHS.XLSX; cdnPath = CDN_PATHS.XLSX;
break; break;
case 'partners':
cdnPath = CDN_PATHS.PARTNERS;
break;
default: default:
var _date = new Date(); var _date = new Date();
cdnPath = _date.getFullYear() + '/' + (_date.getMonth() + 1) + '/'; cdnPath = _date.getFullYear() + '/' + (_date.getMonth() + 1) + '/';
@ -94,5 +102,7 @@ module.exports = {
getCDNMediaUrl, getCDNMediaUrl,
getCDNPath, getCDNPath,
getCDNFilenameWithPath, getCDNFilenameWithPath,
getCDNCurrentPartnersJSON,
getCDNPastPartnersJSON,
getUniqueName getUniqueName
} }

View File

@ -11,8 +11,8 @@ module.exports = function (sequelize, DataTypes) {
}, },
phone: { phone: {
type: DataTypes.STRING, type: DataTypes.STRING,
unique: true 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 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: { email: {
type: DataTypes.STRING, type: DataTypes.STRING,

View File

@ -4,26 +4,26 @@ const Sequelize = require('sequelize');
moment.locale('es'); moment.locale('es');
const getStateCode = (event) => { const getStateCode = (event) => {
var currentDate = moment().utc(), var currentDate = moment(),
initDate = moment.utc(event.ini_date), initDate = moment(event.init_date),
endDate = moment.utc(event.end_date), endDate = moment(event.end_date),
init_availableDate = moment.utc(event.init_available_date), init_availableDate = moment(event.init_available_date),
end_availableDate = moment.utc(event.end_available_date); end_availableDate = moment(event.end_available_date);
if (moment(currentDate).isBetween(initDate, endDate)) { if (currentDate.isBetween(initDate, endDate)) {
return 'current_event'; return 'current_event';
} else { } else {
if (moment(endDate).isBefore(currentDate)) { if (endDate.isBefore(currentDate)) {
return 'closed_event'; return 'closed_event';
} else { } else {
if (moment(currentDate).isBefore(init_availableDate)){ if (currentDate.isBefore(init_availableDate)){
return 'future_registrations' return 'future_registrations'
} else { } 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'; return (event.sold_out == 1) ? 'waitinglist_open' : 'registrations_open';
} }
else { else {
if (moment(currentDate).isAfter(end_availableDate)) if (currentDate.isAfter(end_availableDate))
return 'closed_registrations' return 'closed_registrations'
else else
return 'N/A'; return 'N/A';
@ -34,28 +34,27 @@ const getStateCode = (event) => {
}; };
}; };
const getStateText = (event) => { const getStateText = (event) => {
var currentDate = moment().utc(), var currentDate = moment(),
initDate = moment.utc(event.ini_date), initDate = moment(event.init_date),
endDate = moment.utc(event.end_date), endDate = moment(event.end_date),
init_availableDate = moment.utc(event.init_available_date), init_availableDate = moment(event.init_available_date),
end_availableDate = moment.utc(event.end_available_date); end_availableDate = moment(event.end_available_date);
if (moment(currentDate).isBetween(initDate, endDate)) { if (currentDate.isBetween(initDate, endDate)) {
return 'Congreso en curso'; return 'Congreso en curso';
} else { } else {
if (moment(endDate).isBefore(currentDate)) { if (endDate.isBefore(currentDate)) {
return 'Congreso finalizado'; return 'Congreso finalizado';
} else { } else {
if (moment(currentDate).isBefore(init_availableDate)) { if (currentDate.isBefore(init_availableDate)) {
return 'Inscripciones a partir del ' + moment(init_availableDate).format('D [de] MMMM'); return 'Inscripciones a partir del ' + init_availableDate.format('D [de] MMMM');
} else { } 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'; return (event.sold_out == 1) ? 'Inscripciones abiertas a lista de espera' : 'Inscripciones abiertas';
} }
else { else {
if (moment(currentDate).isAfter(end_availableDate)) if (currentDate.isAfter(end_availableDate))
return 'Inscripciones cerradas' return 'Inscripciones cerradas'
else else
return 'N/A'; return 'N/A';
@ -317,7 +316,7 @@ module.exports = function (sequelize, DataTypes) {
Event.addScope('next', { Event.addScope('next', {
where: { where: {
init_date: { 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', { Event.addScope('today', {
where: { where: {
init_date: { init_date: {
[Sequelize.Op.gte]: moment().startOf('day'), [Sequelize.Op.gte]: moment().startOf('day').format('YYYY-MM-DD HH:mm:ss'),
[Sequelize.Op.lt]: moment().add(1, 'days').startOf('day'), [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', { Event.addScope('current', {
where: { where: {
init_date: { init_date: {
[Sequelize.Op.lte]: moment().utc(), [Sequelize.Op.lte]: moment().format('YYYY-MM-DD HH:mm:ss'),
}, },
end_date:{ 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', { Event.addScope('past', {
where: { where: {
init_date: { 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', { Event.addScope('withOpenInscriptions', {
where: { where: {
init_available_date: { init_available_date: {
[Sequelize.Op.lte]: moment().utc() [Sequelize.Op.lte]: moment().format('YYYY-MM-DD HH:mm:ss')
}, },
end_available_date: { end_available_date: {
[Sequelize.Op.gt]: moment().utc() [Sequelize.Op.gt]: moment().format('YYYY-MM-DD HH:mm:ss')
} }
}, },
}); });

View File

@ -57,7 +57,7 @@ routes.get('/events/next',
PaginateMiddleware.middleware(), PaginateMiddleware.middleware(),
SortMiddleware.middleware({ default: "init_date" }), SortMiddleware.middleware({ default: "init_date" }),
(req, res, next) => { (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({ return eventController.find({
scopes: ['defaultScope', 'next', 'includeVenue', 'includeMultimedias', { method: ['includeInscription', req.user.id] }], scopes: ['defaultScope', 'next', 'includeVenue', 'includeMultimedias', { method: ['includeInscription', req.user.id] }],
})(req, res, next) })(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', routes.get('/events/today',
isLoggedUser, isLoggedUser,
FieldMiddleware.middleware({ 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', routes.get('/events/current',
isLoggedUser, isLoggedUser,
FieldMiddleware.middleware({ FieldMiddleware.middleware({

View File

@ -27,7 +27,7 @@ const ReservationInputType = Joi.object().keys({
const EventQuestionInputType = Joi.object().keys({ const EventQuestionInputType = Joi.object().keys({
//eventId: Joi.string().required(), //eventId: Joi.string().required(),
speakerId: Joi.string().required(), speakerId: Joi.string().required(),
answer: Joi.string().required(), question: Joi.string().required(),
}); });
module.exports = { module.exports = {

View File

@ -10,8 +10,12 @@ module.exports = function (sequelize, DataTypes) {
defaultValue: DataTypes.UUIDV4, defaultValue: DataTypes.UUIDV4,
primaryKey: true, primaryKey: true,
}, },
description: { question: {
type: DataTypes.STRING, type: DataTypes.TEXT,
allowNull: true
},
answer: {
type: DataTypes.TEXT,
}, },
anonimous: { anonimous: {
type: DataTypes.BOOLEAN, type: DataTypes.BOOLEAN,
@ -25,10 +29,6 @@ module.exports = function (sequelize, DataTypes) {
type: DataTypes.BOOLEAN, type: DataTypes.BOOLEAN,
defaultValue: false, defaultValue: false,
}, },
answer: {
type: DataTypes.TEXT,
allowNull: true
},
}, { }, {
tableName: 'events_questions', tableName: 'events_questions',
freezeTableName: true, freezeTableName: true,