Added multiple features

This commit is contained in:
Torsten Schulz
2024-06-17 23:34:31 +02:00
parent 48a54ecdbb
commit 8c54988023
38 changed files with 1006 additions and 145 deletions

View File

@@ -0,0 +1,95 @@
const { Image } = require('../models');
const { v4: uuidv4 } = require('uuid');
const multer = require('multer');
const path = require('path');
const storage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, 'public/images/uploads');
},
filename: (req, file, cb) => {
const uniqueSuffix = `${uuidv4()}${path.extname(file.originalname)}`;
cb(null, uniqueSuffix);
}
});
const upload = multer({ storage });
exports.uploadImage = upload.single('image');
exports.saveImageDetails = async (req, res) => {
try {
const { title, description, pageId } = req.body;
const filename = req.file.filename;
const newImage = await Image.create({
id: uuidv4(),
filename,
title,
description,
pageId: pageId || null
});
res.status(201).json(newImage);
} catch (error) {
console.error('Fehler beim Speichern des Bildes:', error);
res.status(500).send('Fehler beim Speichern des Bildes');
}
};
exports.getImages = async (req, res) => {
try {
const images = await Image.findAll();
res.status(200).json(images);
} catch (error) {
console.error('Fehler beim Abrufen der Bilder:', error);
res.status(500).send('Fehler beim Abrufen der Bilder');
}
};
exports.getImagesByPage = async (req, res) => {
try {
const { pageId } = req.params;
const images = await Image.findAll({ where: { pageId } });
res.status(200).json(images);
} catch (error) {
console.error('Fehler beim Abrufen der Bilder:', error);
res.status(500).send('Fehler beim Abrufen der Bilder');
}
};
exports.getImageById = async (req, res) => {
try {
const { id } = req.params;
const image = await Image.findByPk(id);
if (image) {
res.status(200).json(image);
} else {
res.status(404).send('Bild nicht gefunden');
}
} catch (error) {
console.error('Fehler beim Abrufen des Bildes:', error);
res.status(500).send('Fehler beim Abrufen des Bildes');
}
};
exports.updateImage = async (req, res) => {
try {
const { id } = req.params;
const { title, description } = req.body;
const image = await Image.findByPk(id);
if (!image) {
return res.status(404).json({ error: 'Bild nicht gefunden' });
}
image.title = title;
image.description = description;
await image.save();
res.json(image);
} catch (error) {
console.error('Fehler beim Aktualisieren des Bildes:', error);
res.status(500).json({ error: 'Fehler beim Aktualisieren des Bildes' });
}
};

View File

@@ -1,4 +1,4 @@
const { MenuItem } = require('../models'); // Stellen Sie sicher, dass das Modell korrekt importiert wird
const { MenuItem } = require('../models');
const fetchMenuData = require('../utils/fetchMenuData');
exports.getMenuData = async (req, res) => {
@@ -13,8 +13,15 @@ exports.getMenuData = async (req, res) => {
exports.saveMenuData = async (req, res) => {
try {
const menuData = req.body;
const adjustedMenuData = menuData.map(item => {
item.parent_id = item.parent_id < 0 ? null : item.parent_id;
return item;
})
.sort((a, b) => (a.parent_id === null ? -1 : 1) - (b.parent_id === null ? -1 : 1));
await MenuItem.destroy({ where: {} });
await MenuItem.bulkCreate(menuData, { include: [{ model: MenuItem, as: 'submenu' }] });
for (const item of adjustedMenuData) {
await MenuItem.create(item);
}
res.status(200).send('Menü-Daten erfolgreich gespeichert');
} catch (error) {
console.error('Fehler beim Speichern der Menü-Daten:', error);

View File

@@ -0,0 +1,60 @@
const { User } = require('../models');
exports.getAllUsers = async (req, res) => {
try {
const users = await User.findAll();
res.status(200).json(users);
} catch (error) {
res.status(500).json({ message: 'Error fetching users' });
}
};
exports.getUserById = async (req, res) => {
try {
const user = await User.findByPk(req.params.id);
if (user) {
res.status(200).json(user);
} else {
res.status(404).json({ message: 'User not found' });
}
} catch (error) {
res.status(500).json({ message: 'Error fetching user' });
}
};
exports.createUser = async (req, res) => {
try {
const user = await User.create(req.body);
res.status(201).json(user);
} catch (error) {
res.status(500).json({ message: 'Error creating user' });
}
};
exports.updateUser = async (req, res) => {
try {
const user = await User.findByPk(req.params.id);
if (user) {
await user.update(req.body);
res.status(200).json(user);
} else {
res.status(404).json({ message: 'User not found' });
}
} catch (error) {
res.status(500).json({ message: 'Error updating user' });
}
};
exports.deleteUser = async (req, res) => {
try {
const user = await User.findByPk(req.params.id);
if (user) {
await user.destroy();
res.status(200).json({ message: 'User deleted successfully' });
} else {
res.status(404).json({ message: 'User not found' });
}
} catch (error) {
res.status(500).json({ message: 'Error deleting user' });
}
};

View File

@@ -1,4 +1,4 @@
const { Worship, EventPlace } = require('../models');
const { Worship, EventPlace, Sequelize } = require('../models');
const { Op } = require('sequelize'); // Importieren Sie die Operatoren von Sequelize
exports.getAllWorships = async (req, res) => {
@@ -53,7 +53,14 @@ exports.getFilteredWorships = async (req, res) => {
const where = {};
if (location && location !== '-1') {
where.eventPlaceId = location;
if (location.includes('|')) {
const locationsArray = location.split('|');
where.eventPlaceId = {
[Sequelize.Op.in]: locationsArray
}
} else {
where.eventPlaceId = location;
}
}
where.date = {