diff --git a/.gitignore b/.gitignore index 185e6631..6a023110 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,9 @@ node_modules .env.local .env.*.local +config.development.js +config.production.js + # Log files npm-debug.log* yarn-debug.log* diff --git a/app/api.js b/app/api.js index 52208a50..5fd28777 100644 --- a/app/api.js +++ b/app/api.js @@ -35,9 +35,9 @@ api.get('/event/meta', eventController.getMeta) api.route('/event/:event_id') .get(eventController.get) - -api.get('/export/feed', exportController.feed) -api.get('/export/ics', exportController.ics) +// api.get('/export/feed', exportController.feed) +// api.get('/export/ics', exportController.ics) +api.get('/export/:type', exportController.export) api.route('/event/:year/:month') .get(eventController.getAll) diff --git a/app/controller/event.js b/app/controller/event.js index 6eeac3fb..ab8a8128 100644 --- a/app/controller/event.js +++ b/app/controller/event.js @@ -49,7 +49,7 @@ const eventController = { { start_datetime: { [Sequelize.Op.lte]: end } } ] }, - order: [['createdAt', 'ASC']], + order: [['start_datetime', 'ASC']], include: [User, Comment, Tag, Place] }) res.json(events) diff --git a/app/controller/export.js b/app/controller/export.js index a1eede79..56055673 100644 --- a/app/controller/export.js +++ b/app/controller/export.js @@ -1,43 +1,62 @@ -const jwt = require('jsonwebtoken') -const { User, Event, Comment, Tag, Place } = require('../model') -const config = require('../config') -const mail = require('../mail') -const moment = require('moment') +const { Event, Comment, Tag, Place } = require('../model') const Sequelize = require('sequelize') +const config = require('../config') +const moment = require('moment') const ics = require('ics') const exportController = { - async getAll (req, res) { + async export (req, res) { + console.log('type ', req.params.type) + const type = req.params.type + const tags = req.query.tags + const places = req.query.places + const whereTag = {} + const wherePlace = {} + const yesterday = moment().subtract('1', 'day') + if (tags) { + whereTag.tag = tags.split(',') + } + if (places) { + wherePlace.name = places.split(',') + } + console.log(wherePlace.name) const events = await Event.findAll({ - where: { - [Sequelize.Op.and]: [ - { start_datetime: { [Sequelize.Op.gte]: start } }, - { start_datetime: { [Sequelize.Op.lte]: end } } - ] - }, - order: [['createdAt', 'DESC']], - include: [User, Comment, Tag, Place] + order: [['start_datetime', 'ASC']], + where: { start_datetime: { [Sequelize.Op.gte]: yesterday } }, + include: [Comment, { + model: Tag, + where: whereTag + }, { model: Place, where: wherePlace } ] }) - res.json(events) + switch (type) { + case 'feed': + return exportController.feed(res, events) + case 'ics': + return exportController.ics(res, events) + } }, - async feed (req, res) { - const events = await Event.findAll({include: [Comment, Tag, Place]}) + async feed (res, events) { res.type('application/rss+xml; charset=UTF-8') - res.render('feed/rss.pug', {events, config, moment}) + res.render('feed/rss.pug', { events, config, moment }) }, - async ics (req, res) { - const events = await Event.findAll({include: [Comment, Tag, Place]}) - console.log(events) - const eventsMap = events.map(e => ({ - start: [2019, 2, 2], - end: [2019, 2, 3], - title: e.title, - description: e.description, - location: e.place.name - })) + + async ics (res, events) { + const eventsMap = events.map(e => { + const tmpStart = moment(e.start_datetime) + const tmpEnd = moment(e.end_datetime) + const start = [tmpStart.year(), tmpStart.month() + 1, tmpStart.date(), tmpStart.hour(), tmpStart.minute()] + const end = [tmpEnd.year(), tmpEnd.month() + 1, tmpEnd.date(), tmpEnd.hour(), tmpEnd.minute()] + return { + start, + end, + title: e.title, + description: e.description, + location: e.place.name + ' ' + e.place.address + } + }) res.type('text/calendar; charset=UTF-8') const { error, value } = ics.createEvents(eventsMap) - console.log(value) + console.log(error, value) res.send(value) } } diff --git a/app/mail.js b/app/mail.js index 1823ec2d..0a776279 100644 --- a/app/mail.js +++ b/app/mail.js @@ -14,7 +14,7 @@ const mail = { } }, message: { - from: 'Gancio ' + from: `${config.title} <${config.admin}>` }, send: true, i18n: {}, diff --git a/client/config.js b/client/config.js index 2f7315af..02ac3a17 100644 --- a/client/config.js +++ b/client/config.js @@ -4,6 +4,7 @@ const beConf = require('../config/config.' + env + '.json') const conf = { // environment title: beConf.title, + description: beConf.description, // base url baseurl: beConf.baseurl, diff --git a/client/src/components/Calendar.vue b/client/src/components/Calendar.vue index 8b2a1b2e..aa6b3a0b 100644 --- a/client/src/components/Calendar.vue +++ b/client/src/components/Calendar.vue @@ -66,7 +66,7 @@ export default { backgroundColor: '#aaffaa' }, popover: {label: this.$t('Today')} - }, + }, ...this.events.map(this.eventToAttribute) ] } diff --git a/client/src/components/Export.vue b/client/src/components/Export.vue index efda2fc4..b4c610e6 100644 --- a/client/src/components/Export.vue +++ b/client/src/components/Export.vue @@ -1,6 +1,6 @@