diff --git a/controllers/worshipController.js b/controllers/worshipController.js
index b112c35..d11c950 100644
--- a/controllers/worshipController.js
+++ b/controllers/worshipController.js
@@ -1,4 +1,5 @@
-const { Worship } = require('../models');
+const { Worship, EventPlace } = require('../models');
+const { Op } = require('sequelize'); // Importieren Sie die Operatoren von Sequelize
exports.getAllWorships = async (req, res) => {
try {
@@ -14,6 +15,7 @@ exports.createWorship = async (req, res) => {
const worship = await Worship.create(req.body);
res.status(201).json(worship);
} catch (error) {
+ console.log(error);
res.status(500).json({ message: 'Fehler beim Erstellen des Gottesdienstes' });
}
};
@@ -45,3 +47,31 @@ exports.deleteWorship = async (req, res) => {
res.status(500).json({ message: 'Fehler beim Löschen des Gottesdienstes' });
}
};
+
+exports.getFilteredWorships = async (req, res) => {
+ const { location, orderBy } = req.query;
+ const where = {};
+
+ if (location && location !== '-1') {
+ where.eventPlaceId = location;
+ }
+
+ where.date = {
+ [Op.gte]: new Date(), // Only include events from today onwards
+ };
+
+ try {
+ const worships = await Worship.findAll({
+ where,
+ include: {
+ model: EventPlace,
+ as: 'eventPlace',
+ },
+ order: [orderBy.split(' ')],
+ });
+ res.status(200).json(worships);
+ } catch (error) {
+ console.log(error);
+ res.status(500).json({ message: 'Fehler beim Abrufen der gefilterten Gottesdienste' });
+ }
+};
diff --git a/migrations/20240617095455-add-day-name-to-worship.js b/migrations/20240617095455-add-day-name-to-worship.js
new file mode 100644
index 0000000..3929961
--- /dev/null
+++ b/migrations/20240617095455-add-day-name-to-worship.js
@@ -0,0 +1,16 @@
+'use strict';
+
+/** @type {import('sequelize-cli').Migration} */
+module.exports = {
+ up: async (queryInterface, Sequelize) => {
+ await queryInterface.addColumn('worships', 'day_name', {
+ type: Sequelize.STRING,
+ allowNull: false,
+ default: ''
+ });
+ },
+
+ down: async (queryInterface, Sequelize) => {
+ await queryInterface.removeColumn('worships', 'day_name');
+ }
+};
diff --git a/models/MenuItem.js b/models/MenuItem.js
index 4ad1f33..cb53fbb 100644
--- a/models/MenuItem.js
+++ b/models/MenuItem.js
@@ -34,7 +34,7 @@ module.exports = (sequelize) => {
allowNull: false,
defaultValue: 0
},
- page_title: { // Neuer Eintrag
+ page_title: {
type: DataTypes.STRING,
allowNull: true
}
diff --git a/models/Worship.js b/models/Worship.js
index e387884..c5cd682 100644
--- a/models/Worship.js
+++ b/models/Worship.js
@@ -50,6 +50,11 @@ module.exports = (sequelize) => {
introLine: {
type: DataTypes.STRING,
allowNull: true
+ },
+ dayName: {
+ type: DataTypes.STRING,
+ defaultValue: '',
+ allowNull: false
}
}, {
tableName: 'worships',
diff --git a/package-lock.json b/package-lock.json
index 546fed4..cac17e8 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -28,6 +28,7 @@
"core-js": "^3.8.3",
"cors": "^2.8.5",
"crypto": "^1.0.1",
+ "date-fns": "^3.6.0",
"dotenv": "^16.4.5",
"express": "^4.19.2",
"jsonwebtoken": "^9.0.2",
@@ -5708,6 +5709,15 @@
"node": ">=0.12"
}
},
+ "node_modules/date-fns": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz",
+ "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/kossnocorp"
+ }
+ },
"node_modules/debounce": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz",
diff --git a/package.json b/package.json
index 551ae97..e5f95d5 100644
--- a/package.json
+++ b/package.json
@@ -28,6 +28,7 @@
"core-js": "^3.8.3",
"cors": "^2.8.5",
"crypto": "^1.0.1",
+ "date-fns": "^3.6.0",
"dotenv": "^16.4.5",
"express": "^4.19.2",
"jsonwebtoken": "^9.0.2",
diff --git a/routes/worships.js b/routes/worships.js
index e39ea8f..b53dc6d 100644
--- a/routes/worships.js
+++ b/routes/worships.js
@@ -1,11 +1,12 @@
const express = require('express');
const router = express.Router();
-const { getAllWorships, createWorship, updateWorship, deleteWorship } = require('../controllers/worshipController');
+const { getAllWorships, createWorship, updateWorship, deleteWorship, getFilteredWorships } = require('../controllers/worshipController');
const authMiddleware = require('../middleware/authMiddleware');
-router.get('/', authMiddleware, getAllWorships);
+router.get('/', getAllWorships);
router.post('/', authMiddleware, createWorship);
router.put('/:id', authMiddleware, updateWorship);
router.delete('/:id', authMiddleware, deleteWorship);
+router.get('/filtered', getFilteredWorships);
module.exports = router;
diff --git a/src/components/ContentComponent.vue b/src/components/ContentComponent.vue
index e3ea700..6f45833 100644
--- a/src/components/ContentComponent.vue
+++ b/src/components/ContentComponent.vue
@@ -1,73 +1,74 @@
Keine Gottesdienste verfügbar.{{ title }}
-
+ {{ title }}
+
+
+
+
+
+
+
+
+
+ {{ formatTime(worship.time) }} -
+ {{ !worship.neighborInvitation ? worship.title : '' }}
+
+ {{ title }}
+